global和nonlocal是 Python 中用于訪問變量作用域的關(guān)鍵字。它們?cè)诤瘮?shù)中使用,用于更改變量的作用域。
全球關(guān)鍵字用于在函數(shù)內(nèi)部訪問和修改全局變量。當(dāng)在函數(shù)內(nèi)部使global關(guān)鍵字聲明一個(gè)變量時(shí),該變量將被視為全局變量。例如:
在這個(gè)例子中,'count變量被聲明為全局變量,因此函數(shù) 'increment increment()可以訪問并修改該變量。
'非nonlocal關(guān)鍵字聲明一個(gè)變量時(shí),Python 將查找最近的非局部作用域,該變量將被視為非局部變量。例如:
在這個(gè)例子中,'內(nèi)部nonlocal關(guān)鍵字來(lái)訪問并修改外部函數(shù) 'outerouter()中的變量count。因此,每次調(diào)用inner()函數(shù)時(shí),'countcount的值都會(huì)增加,并被打印出來(lái)。
需要注意的是,'globalnonlocal關(guān)鍵字應(yīng)該被謹(jǐn)慎使用,因?yàn)樗鼈兛赡軙?huì)導(dǎo)致變量作用域的不確定性和程序的難以維護(hù)。通常情況下,建議避免使用全局變量和嵌套函數(shù),而是使用函數(shù)參數(shù)和返回值來(lái)實(shí)現(xiàn)相同的功能。