局部变量不能在全局作用域内使用
>>> def spam(): eggs = 31337 return eggs >>> spam() 31337 >>> print(eggs) Traceback (most recent call last): File "<pyshell#20>", line 1, in <module> print(eggs) NameError: name 'eggs' is not defined
局部作用域不能使用其他局部作用域的变量
>>> def spam(): eggs = 99 bacon() print(eggs) >>> def bacon(): ham = 101 eggs = 0 return eggs >>> spam() 99
全局变量可以在局部作用域中读取
>>> def spam(): print(eggs) >>> eggs = 42 >>> spam() 42 >>> print(eggs) 42
名称相同的全局变量和局部变量
>>> def spam(): eggs = 'spam local' print(eggs) >>> def bacon(): eggs = 'bacon local' print(eggs) spam() print(eggs) >>> eggs = 'global' >>> bacon() bacon local spam local bacon local >>> print(eggs) global
global 语句 (在一个函数内修改全局变量)
>>> def spam(): global eggs eggs = 'spam' >>> eggs = 'global' >>> spam() >>> print(eggs) spam >>> def spam(): global eggs eggs = 'spam' >>> eggs = 'global' >>> print(eggs) global
>>> def spam(): global eggs eggs = 'spam' >>> def bacon(): eggs = 'bacon' return eggs >>> def ham(): print(eggs) >>> eggs = 42 >>> bacon() 'bacon' >>> ham() 42 >>> print(eggs) 42 >>> spam() >>> bacon() 'bacon' >>> ham() spam >>> print(eggs) spam