juk*_*uke 2 python pointers scope
我想做什么(C代码):
int a = 2, b = 3, c = 4;
int* arr[3] = {&a, &b, &c};
for (int i = 0; i < 3; ++i) {
if (*(arr[i]) > 1) {
*(arr[i]) = 1
}
}
Run Code Online (Sandbox Code Playgroud)
我期待Python用这段代码做类似的行为指针.
>>> a = 2
>>> b = 3
>>> c = 4
>>> for x in [a, b, c]:
... if x > 1:
... x = 1
...
>>> a,b,c
(2, 3, 4)
Run Code Online (Sandbox Code Playgroud)
如何在Python中实现C代码的行为?
Python在这个意义上没有指针.
Python变量是绑定到值而不是内存中位置的名称,因此更改一个变量的值不会更改具有相同值的另一个变量的值.
你可以用locals你想要的东西来实现:
>>> a = 2
>>> b = 3
>>> c = 4
>>> for x in 'a','b','c':
... if locals()[x] > 1:
... locals()[x] = 1
...
>>> a
1
Run Code Online (Sandbox Code Playgroud)
但是,我强烈建议不要这样做.如果你发布另一个解释问题的问题,你试图解决,你将获得更多的"Pythonic"方式.
可能只是将您的值存储在以下情况中dict:
>>> vals = { 'a' : 2, 'b' : '3', 'c' : 4 }
>>> for key,value in vals.items():
... if value > 1:
... vals[key] = 1
...
>>> vals
{'a': 1, 'c': 1, 'b': 1}
Run Code Online (Sandbox Code Playgroud)