函数的作用域

函数的作用域在它定义阶段就已经确定了

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,也没有全局的变量,所以报错.

上一篇:Django中a标签链接前面加不加/的区别

下一篇:Mysql delete与truncate区别