def f(a,b): a=4 return a+b def main(): a=5 b=6 print(f(a,b),a+b) main()
输出结果为 10,11
在第二个函数main()中,局部变量a,b,确实使得f(a,b)变为f(5,6)。
但是第一个函数定义f(a) = 4+b (函数内部运算完,局部变量已被释放掉,所以和a没有关系了)
所以输出的f(a,b)是10
具体能否赋值对函数内部产生影响,可以做一下尝试:
def f(a):
return a
a = 2
print(f(a))
输出结果为2
这里的 a = 2 也可以放在函数前,输出结果相同。
注意:如果不在函数内部改变全局变量,其实引用全局变量也不用global声明。



