указатели в python

Я студент-физик, в основном программируя на Python и Matlab, теперь становлюсь на C, чтобы повысить производительность моих симуляций.

Простой вопрос: есть ли указатели на Python? Есть ли указатели в Matlab? Если да, могу ли я использовать их с аналогичной «легкостью», как в C?

  • Ошибка генерирования create_string_buffer ТипError: ожидаемая строка / байты вместо str instance
  • Есть ли способ сделать мягкую ссылку или объекты с указателем, используя массивы Numpy?
  • Указатели на статические методы в Python
  • Указатели и массивы в типах Python
  • Как назначить адрес памяти для переменной в Python?
  • Получить значение указателя Cython
  • Я знаю, что за высокой степенью точности в Python и Matlab есть много указателей на работе. Вопрос в том, могу ли я сделать что-то вроде этого C-кода явно в Python или Matlab:

    int *p; int someValue = 1; p = &someValue; doSomethingForMe = callSomeFunction(p); 

    Я знаю, что, вероятно, нет смысла делать это в любом случае (для большинства приложений). Я просто хочу учиться.

  • Где я могу найти источник или алгоритм функции hash () Python?
  • Запустите скрипт python с аргументами
  • Приложение Python / Qt / SQLite3 не запускается при установке с помощью Inno Setup
  • Перевод кода с Python на C?
  • Обтекание библиотеки C
  • Как вы скажете pyximport использовать параметр cython - cplus?
  • 2 Solutions collect form web for “указатели в python”

    Вы обычно слышите, что у Python есть имена , а не «переменные» в традиционном смысле. Он также не имеет «указателей», поскольку такая концепция имеет смысл только при работе на низком уровне, например, с C. (По этой причине вы можете получить «указатели», если вы используете библиотеку совместимости C в Python, например, ctypes . Но такие указатели предназначены только для взаимодействия с C.)

    Большая часть функциональности, которую вы использовали бы указатель для C, присутствует в некоторой другой форме в Python. Например:

    • Возврат нескольких значений из функции. В C вы должны сделать int foo(int *, int *) чтобы вернуть два ints (и, возможно, код ошибки). В Python просто используйте распаковку: x, y = foo() с return x, y в foo .
    • Передача больших объектов. Так как все все-таки пошагово, вы можете спокойно передать ссылку на огромный объект, не скопировав его.
    • Изменение входных параметров. В большинстве случаев это возможно путем выбора соответствующего изменяемого ввода. Например, вы можете передать список в функцию и изменить список внутри функции. В Python, так как ссылки одинаковы, список ввода будет изменен:

       def change_list(l): l[0] = 3 my_list = [1,2,3] change_list(my_list) print(my_list) # prints [3, 2, 3] 

    MATLAB имеет другую концепцию переменной, чем Python. В MATLAB переменная представляет собой матрицу с некоторыми измерениями. Написание x = y эффективно копирует y в x (соответственно устанавливает размеры x s). MATLAB внутренне выполняет оптимизацию, чтобы избежать фактического копирования данных, если это необходимо, но для программиста это будет выглядеть так, как если бы x и y были отдельными матрицами.

    MATLAB также не имеет указателей, если вы не имеете дело с скомпилированным расширением MEX (которое написано на каком-то другом языке, таком как C). Как и у Python, у вас есть механизмы для передачи вещей без необходимости указателей (например, несколько входных и выходных аргументов).

    ctypes видимому, Python может иметь указатели с библиотекой ctypes . Кроме того, вы можете моделировать понятие указателей в Python , как в этом вопросе.

    В Matlab у вас тоже нет указателей.

    Python - лучший язык программирования в мире.