Python:用于更改同样为参数

时间:2016-10-04 00:12:06

标签: python function global

def fxn(L):
    """ 
    """
    global L = 2

L = 1
fxn(L)
print(L)

我有一个类似上面的功能。假设我需要函数来改变函数内的全局变量,这样当我在调用fxn(L)后打印L时。我最终得到的是2而不是1.

有没有办法做到这一点?我不能在函数中使用全局L,因为L也是一个参数。

2 个答案:

答案 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吗?”