我想对许多对象执行相同的操作,因此我将它们放入列表中并循环执行该操作,如下所示:
ob1 = 0
ob2 = 0
mylist = [ob1, ob2]
for i in range(len(mylist)):
mylist[i] = 5
print(mylist[0])
print(ob1)
输出为0和5。我可以以某种方式修改对象,使其具有输出5和5吗?
没有python Python没有指针(以C / C ++和其他语言的方式)
也许在cPython中有一些事情要做
Python是人类可读的语言,因此请考虑python处理内存,并在程序不需要时释放内存块
因此,我认为最好不要考虑内存中的特定块,而使用复制的一个:)
我假设do_stuff()
看起来像这样:
def do_stuff(x):
# ... some code
x = something
[x = something
将本地名称x
重新分配给其他值,并且它忘记了它以前返回原始列表的所有以前的链接。
执行所需操作的一种方法是让do_stuff()
返回新值,然后在调用上下文中重写列表:
mylist = [ob1, ob2, ...]
for i in range(mylist):
mylist[i] = do_stuff(mylist[i])
def do_stuff(x):
# perform calculations
return new_value
我已经使用setattr()解决了问题:
ob1 = 0
ob2 = 0
mylist = ['ob1', 'ob2']
for name in len(mylist):
setattr(self, name, 5)
print(mylist[0])
print(ob1)
如果有人感兴趣,我会发布它;)