自学Python-作用域

2025-07-01 13:21:41

作用域:顾名思义,作用的范围。如果你是自学者,而且已经进军到函数这一部分了,那么就应当了解下Python的作用域。否则你可能会像我一样,总是对一个变量名同时存在函数内和函数外且有不同值搞的晕头转向。在这里就总结一下,在本人的知识范围内所了解到的作用域是什么样的,LEGB规则到底规定了什么。

1.作用域(命名空间)的产生:

1、全局范围的产生(global):我们创建一个xxx.py文件,就是一个模块,这时一个作用域就产生了。这个范围是整个模块,称作Global ,全局范围。例如:创建一个文件demo.py。声明一个变量,bd="百度"。变量bd就是个全局变量。--------------------bd="百度"if True: print(bd)#==============def function_1(): print(bd)function_1()--------------------bd在函数内和函数外都能被使用。

自学Python-作用域

3、嵌套范围的产生(Enclosed ):这个范围在函数嵌套时污僻莆姆产生,介于全局和局部范围之间。比如一个函数嵌套了另一个函数,这个函数的作用域就是嵌套的锰栝骼郛范围,被嵌套的就是本地范围,如果有更多层的嵌套,那就有多层的嵌套范围。--------------------x=20def local_out(): y=30 def local_in(): z=40 print('本地变量z:',z) print('嵌套变量y:',y) local_in()print("全局变量x:",x)local_out()输出:全局变量x: 20嵌套变量y: 30本地变量z: 40--------------------

自学Python-作用域

2、python脚本运行时找名称的顺序:1)从它本身所在的层级找名;2)如果没有就向外层找;3)不会向内找,也不会从和它同级的层内找。

自学Python-作用域

4、同一作用域内两个名称是独立的,互不干扰。比如两个同一级别的函数内,可以定义同名的变量,或嵌套同名的函数。-------------------a=3def add_1(): a=30 print('add_1的 a =',a)def add_2(): a = 3000 print('add_2的 a =', a)add_1()add_2()print('全局变量的 a =', a)输出:add_1的 a = 30add_2的 a = 3000全局变量的 a = 3-------------------

自学Python-作用域

结束语

1、以上就是关于,作用域的一些规则。个人认为,尽管作用域是独立的,但避免写同名的函数,和变量。可起的名字很多,何必给自己找麻烦。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢