Python關(guān)鍵字之global與nonlocal
Python關(guān)鍵字 global與nonlocal
global
def test(): #1函數(shù)內(nèi)如果沒定義x,則x默認為全局變量 print(x) # 輸出 global v #2函數(shù)內(nèi)如果定義x,則x為局部變量 x = 'local v' # 局部變量 print(x) # 輸出 local v x = "global v" # 全局變量
如何在函數(shù)內(nèi)修改全局變量呢?[利用關(guān)鍵字global]
def test(): #在函數(shù)內(nèi)先聲明全局變量, global x # 即x = "global v",注意global修飾變量時不能直接賦值,如 global x =‘a(chǎn)bc' 報錯! # 修改全局變量 x = 'modified global v' x = "global v" # 全局變量 print(x) # global v test() print(x) # modified global v
nonloacl
nonlocal只能在嵌套函數(shù)中使用,用于標(biāo)識嵌套函數(shù)中的變量是包含該嵌套函數(shù)的函數(shù)中的同名變量,在嵌套函數(shù)中修改變量會影響函數(shù)中的變量。
def func(): # 函數(shù) x = 'loval v' def ifunc(): # 嵌套函數(shù) nonlocal x # x = 'loval v'
如果在函數(shù)中使用global修飾了變量,那么在嵌套函數(shù)中用nonlocal修飾同名變量會發(fā)生報錯,因為nonlocal表示該變量在函數(shù)中已經(jīng)定義,但檢查時因為同名變量被global修飾為全局變量,所以不存在同名的局部變量,從而導(dǎo)致錯誤
x = 'global v' # 全局變量 def func(): # 函數(shù) global x def ifunc(): # 嵌套函數(shù) nonlocal x # 報錯!!
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
python采用requests庫模擬登錄和抓取數(shù)據(jù)的簡單示例
這篇文章主要介紹了python采用requests庫模擬登錄和抓取數(shù)據(jù)的簡單示例,代碼簡單卻功能強大!需要的朋友可以參考下2014-07-07pandas常用表連接merge/concat/join/append詳解
使用python的pandas庫可以很容易幫你搞定,而且性能也是很出色的;百萬級的表關(guān)聯(lián),可以秒出,本文給大家分享pandas常用表連接merge/concat/join/append詳解,感興趣的朋友跟隨小編一起看看吧2023-02-02python中Tkinter 窗口之輸入框和文本框的實現(xiàn)
這篇文章主要介紹了python中Tkinter 窗口之輸入框和文本框的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04centos6.8安裝python3.7無法import _ssl的解決方法
這篇文章主要介紹了centos6.8安裝python3.7無法import _ssl的解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09