[Код в исходной версии был сильно испорчен. Даже после того, как я исправил код, на этом посту остались несколько весьма запутанных опечаток. Я верю, что, наконец, все они исправлены. Профильные извинения.]
Два вызова alias
ниже производят разные выходы, потому что объект, связанный с переменной my_own_id
, изменяется между двумя вызовами:
>>> def my_own_id():
... me = my_own_id
... return id(me)
...
>>> alias = my_own_id
>>> alias()
4301701560
>>> my_own_id = None
>>> alias()
4296513024
Что я могу назначить me
в определении my_own_id
, чтобы его вывод оставался неизменным после последующих переопределений переменной my_own_id
? (IOW, так что внутренняя переменная me
всегда относится к одному и тому же объекту функции?)
(я могу получить текущий кадр (с inspect.currentframe()
), но он содержит только ссылку на текущий объект кода, а не на текущую функцию.)
P.S. Мотивация для этого вопроса заключается в том, чтобы лучше знать Python.