После перезагрузки функция из файла Python по-прежнему использует старую версию - PullRequest
0 голосов
/ 31 мая 2019

Я создал следующее file.py

def function():
  print('Hello')

Я импортирую и вызываю эту функцию:

>>> from file import function
>>> function
<function function at 0x0000022BF425FB70>
>>> function()
Hello

Теперь я изменил функцию, чтобы вывести «Hello world» вместо «Hello»и перезагрузите файл снова:

>>> from file import function
>>> function
<function function at 0x0000022BF425FB70>
>>> function()
Hello
>>> import inspect
>>> inspect.getsource(function)
"def function():\n\tprint('Hello world')\n"

Что меня смущает, так это то, что новая функция фактически перезагружается (что мы видим из исходного кода функции в последней строке), но она по-прежнему печатает «Hello».Как это возможно?Также указатель на функцию не изменился, даже если изменился исходный код функции.

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

...