函数的作用域在它定义阶段就已经确定了
def tell_info(name):
print("%s have %s" %(name, money))
def foo():
money = 100
tell_info("andy")
foo()
Traceback (most recent call last):
File "D:/Coding/oldboy/测试.py", line 86, in <module>
foo()
File "D:/Coding/oldboy/测试.py", line 83, in foo
tell_info("andy")
File "D:/Coding/oldboy/测试.py", line 79, in tell_info
print("%s have %s" %(name, money))
NameError: name 'money' is not defined
函数的作用域关系在定义阶段就已经确定,与调用位置无关,无论函数在何处调用,都需要回到定义阶段去找对应的作用域关系,上面的例子中tell_info虽然在foo中调用,但它仍会回到tell_info中查找对应作用域关系,tell_info中没有局部money,也没有全局的变量,所以报错.