【发布时间】:2012-12-24 19:21:33
【问题描述】:
可能重复:
Get object by id()?
>>> var = 'I need to be accessed by id!'
>>> address = id(var)
>>> print(address)
33003240
有没有什么方法可以使用id()提供的内存中var的地址来访问var的值?
UPD:
我还想说,如果这不能在标准 Python 中完成,那也很有趣,如果这可以通过破解 Python 的 C++ 内部实现。
UPD2:
还想知道如何更改 var 的值。
【问题讨论】:
-
你不能。
id()的返回值不是引用。 cpython 在此处返回内存地址这一事实是一个实现细节,将其用作参考不是函数的目标。 -
你为什么要以任何神的名义这样做? Martijn 是正确的,即使您可以在 CPython 中以某种方式破解它,它也只是一个实现细节。
-
你为什么要这样做?
-
你想达到什么目的?可能还有其他方法可以实现您需要做的任何事情。
-
第一个目标:好玩;第二:通过引用传递——有时它需要更大的灵活性,尽管它不是pythonic。这是一个禅宗问题,没有实际背景。
标签: python pointers reference pass-by-reference pass-by-value