def fxn(L):
"""
"""
global L = 2
L = 1
fxn(L)
print(L)
我有一个类似上面的功能。假设我需要函数来改变函数内的全局变量,这样当我在调用fxn(L)后打印L时。我最终得到的是2而不是1.
有没有办法做到这一点?我不能在函数中使用全局L,因为L也是一个参数。
答案 0 :(得分:0)
不应使用相同的变量作为全局变量,使用该全局变量的函数的函数参数。
但是,既然你问过,你可以使用globals()
和locals()
来做。以下是示例代码:
>>> x = 5
>>> def var_test(x):
... print('GLOBAL x: ', globals()['x'])
... print('LOCAL x: ', locals()['x'])
... globals()['x'] = 111
... print('GLOBAL x: ', globals()['x'])
... print('LOCAL x: ', locals()['x'])
...
>>> var_test(20)
GLOBAL x: 5
LOCAL x: 20
GLOBAL x: 111
LOCAL x: 20
答案 1 :(得分:0)
这是一个坏主意,但有一些方法,例如:
a = 5
def f(a):
def change_a(value):
global a
a = value
change_a(7)
f(0)
print(a) # prints 7
实际上,很少需要写入全局变量。然后,全局与变量名称相同的可能性几乎无法改变名称。
如果您遇到这种情况,请问自己“我经常使用global
吗?”