您现在的位置是:主页 > news > 电商网站建设实训步骤/seo关键词排名优化哪家好
电商网站建设实训步骤/seo关键词排名优化哪家好
admin2025/5/31 1:00:20【news】
简介电商网站建设实训步骤,seo关键词排名优化哪家好,怎么查网站建设是哪家公司,网站优化软件破解版知识点:global将一个变量变为全局变量nonlocal改变最近的变量,又不是全局作用。1.global在python中,当引用一个变量的时候,对这个变量的搜索按找本地作用域(Local)、嵌套作用域(Encolosing function locals)、全局作用域(Global)、…
知识点:
global将一个变量变为全局变量
nonlocal改变最近的变量,又不是全局作用。
1.global
在python中,当引用一个变量的时候,对这个变量的搜索按找本地作用域(Local)、嵌套作用域(Encolosing function locals)、全局作用域(Global)、内置作用域(builtins模块)的顺序来进行的,即所谓的LEGB规则。
m = 1 #全局
deffun1():
m= 2 #嵌套
deffun2():
m= 3 #本地
fun2()
fun1()
当在函数中给一个变量赋值的时候,python总是创建或者改变本地作用域的变量名,因此你无法在一个函数外调用函数内的变量,也无法在函数内改变一个函数外的变量。就像下面
#外层无法引用内层变量
deffun1():
k= 10fun1()print(k)
结果:
Traceback (most recent call last):
File"I:/untitled/cx/11月/11-17面向对象/1.属性.py", line 83, in
print(k)
NameError: name‘k‘ is notdefined#内存无法改变外层变量
k = 100
deffun1():
k= k + 50fun1()print(k)#结果
Traceback (most recent call last):
...
UnboundLocalError: local variable‘k‘ referenced before assignment
如果在函数中改变函数外的变量或者在函数外调用函数内的变量时,可以使用global。
global可以将一个变量变为全局变量。在内部改变或者在外部引用。
deffun1():globalk
k= 50fun1()print(k)
或者这样
k= 10
deffun1():globalk
k= 50fun1()print(k)
2.nonlocal
nonlocal可以在一个嵌套的函数中修改嵌套作用域中的变量,理论上是修改离它最近的变量,但不会改变全局。
#这是正常情况
deffunc3():
n= 1
deffunc4():
n= 2
deffunc5():
n= 5
print(n) #5
func5()print(n) #2
func4()print(n) #1
func3()
加入nonlocal之后
deffunc3():
n= 1
deffunc4():
n= 2 #最近的n = 5
deffunc5():
nonlocal n
n= 5
print(n) #5
func5()print(n) #5
func4()print(n) #1
func3()
还可能这样:
deffunc3():
n= 1 #这里最近n =5
deffunc4():#n = 2
deffunc5():
nonlocal n
n= 5
print(n) #5
func5()print(n) #5 继承func3
func4()print(n) #5
func3()
不会改变全局
n =100
deffunc3():
n= 1 #这里最近n =5
deffunc4():deffunc5():
nonlocal n
n= 5
print(n) #5
func5()print(n) #5 继承func3
func4()print(n) #5
func3()#结果
5
5
5
100
原文:http://www.cnblogs.com/yangmingxianshen/p/7852687.html