a = 100
x = 1000
def myFun(a,b):
x = b-a
return x
a = myFun(a,x)
x = myFun(a,x)
print(x+a)
我知道在第一个函数中,a = myFun(a,x)
是900
,但为什么结果为x = myFun(a,x)
,100
?
答案 0 :(得分:3)
函数x
中的名称myFunc()
与全局名称x
独立。它们位于不同的名称空间中。
因此,当您第一次呼叫myFunc(a, x)
时,全局x
值不变;它仍然是1000
:
>>> a = 100
>>> x = 1000
>>> def myFun(a,b):
... x = b-a
... return x
...
>>> myFun(a,x)
900
>>> x
1000
如果您希望在调用x
时更改全局myFunc()
,则需要明确告知Python x
将被视为全局功能:
def myFun(a,b):
global x
x = b-a
return x
现在,在函数中分配给x
将设置全局名称x
:
>>> a = 100
>>> x = 1000
>>> def myFun(a,b):
... global x
... x = b-a
... return x
...
>>> myFun(a,x)
900
>>> x
900