Python作用域用法实例详解
本文实例分析了Python作用域用法。分享给大家供大家参考,具体如下:
每一个编程语言都有变量的作用域的概念,Python也不例外,以下是Python作用域的代码演示:
defscope_test(): defdo_local(): spam="localspam" defdo_nonlocal(): nonlocalspam spam="nonlocalspam" defdo_global(): globalspam spam="globalspam" spam="testspam" do_local() print("Afterlocalassignment:",spam) do_nonlocal() print("Afternonlocalassignment:",spam) do_global() print("Afterglobalassignment:",spam) scope_test() print("Inglobalscope:",spam)
程序的输出结果:
Afterlocalassignment:testspam Afternonlocalassignment:nonlocalspam Afterglobalassignment:nonlocalspam Inglobalscope:globalspam
注意:local赋值语句是无法改变scope_test的spam绑定。nonlocal赋值语句改变了scope_test的spam绑定,并且global赋值语句从模块级改变了spam绑定。
其中,nonlocal是Python3新增的关键字。
你也可以看到在global赋值语句之前对spam是没有预先绑定的。
小结:
遇到在程序中访问全局变量并且要修改全局变量的值的情况可以使用:global关键字,在函数中声明此变量是全局变量
nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。
global关键字很好理解,其他语言大体也如此。这里再举一个nonlocal的例子:
defmake_counter(): count=0 defcounter(): nonlocalcount count+=1 returncount returncounter defmake_counter_test(): mc=make_counter() print(mc()) print(mc()) print(mc())
运行结果:
1 2 3
转自:小谈博客http://www.tantengvip.com/2015/05/python-scope/
希望本文所述对大家Python程序设计有所帮助。