def powerof(x,p):
power = p # Another dumb mistake
y = x ** power
return y
power = 3
result = powerof(10,2)
print result
首先,在函数内部使用全局变量本来就是坏的编程习惯。
其次,试图在函数内部改变全局变量的值也不可能。此时函数内部会再创建一个叫做power
的局部变量,并且在执行y = x ** power
的时候按照先局部变量,再全局变量的顺序找power
,最后求出来的结果是10 ** 2 = 100
,但是函数执行完毕后,临时创建的局部变量就销毁了,全局变量power
仍然等于3。
真的想在函数里面改,加上一个关键字global
:
def powerof(x,p):
global power = p # 尽量别用,不是好的编程习惯
y = x ** power
return y