python global和nonlocal_3.关于作用域知识的额外补充global和nonlocal关键字
本遍文章對global關鍵字和nonlocal關鍵字進行補充,這兩個關鍵字在以后做python開發的時候,能不用盡量別用!最好別用!總會出現讓你意想不到的后果...
1.先說第一種global,不管在任何作用域下,只要是使用global聲明的變量,都會變為全局變量。
直接上例子。
首先是不使用global聲明變量。
x = 1
def f1():
x = "suhaozhi"
print x
def f2():
x = "hamasakiayumi"
print x
f1()
>>> suhaozhi
f2()
>>> hamasakiayumi
print x
>>>1
函數查找變量的默認規則就是,先找函數內部,當本層函數內部沒有這個變量,才會去外部作用域去一層一層去找,一直找到全局作用域,如果在本層找到了,就以本層內部的變量為準,上面的例子就很好的印證了這一點。
當使用了global聲明變量為全局變量后,函數中的內部變量就會變為全局變量,如果變量名相同,甚至可以改變全局變量。
x = 1
def f1():
global x
x = "suhaozhi"
print x
def f2():
x = "hamasakiayumi"
print x
f1()
>>>suhaozhi
f2()
>>>hamasakiayumi
print x
>>>suhaozhi
#在最后可以看到,全局變量x的值被f1函數改變了,原來x = 1,現在x = “suhaozhi”。
2.nonlocal 修改(覆蓋)上層函數的變量。注意!!!這種nonlocal聲明在python2.x版本是不支持的!!!只有python3以上才支持。
def f1():
x = 1
print (x)
def f2():
nonlocal x
x = 2
print (x)
f2()
print (x)
f1()
>>>1
2
2
f2函數中的x變量替換掉了f1函數中的x變量。
總結
以上是生活随笔為你收集整理的python global和nonlocal_3.关于作用域知识的额外补充global和nonlocal关键字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot返回modeland
- 下一篇: c++冒泡排序代码_数据结构和算法必知必