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声明。