1、全局變量與局部變量兩者的區(qū)別
2、global關(guān)鍵字與nonlocal關(guān)鍵字的區(qū)別
一、全局變量與局部變量兩者的本質(zhì)區(qū)別就是在于作用域
- 全局變量是作用在整個py文件上的,在任何地方都能訪問和修改。
-
局部變量只能在它所在的函數(shù)內(nèi)部才能調(diào)用。在其他函數(shù)中無法使用,
且定義的函數(shù)內(nèi)部不能直接使用或修改全局變量。 -
如果函數(shù)內(nèi)部出現(xiàn)與全局變量名字相同的局部變量,其實二者完全不同,注意區(qū)分。
通過下面幾個例子來看二者之間的區(qū)別
DEMO1
>>
>
def
myfun
(
)
:
>>
>
count
=
20
>>
>
count1
=
5
>>
>
return
10
>>
>
count
=
5
>>
>
print
(
myfun
(
)
)
>>
>
print
(
count
)
>>
>
print
(
count1
)
1、全局變量count = 5,函數(shù)內(nèi)部局部變量count = 10,從外部調(diào)用的只是全局變量。
2、count1是局部變量,只能在函數(shù)內(nèi)部訪問,無法從外部直接訪問。
DEMO2
def
fun
(
)
:
num1
*=
2
print
(
"函數(shù)內(nèi)修改后num1="
,
num1
)
num1
=
1
print
(
"初始num1="
,
num1
)
fun
(
)
print
(
"運行完函數(shù)后num1="
,
num1
)
二、global與nonlocal的區(qū)別
- 兩者的功能不同。 global關(guān)鍵字修飾變量后標識該變量是全局變量,對該變量進行修改就是修改全局變量 ,而 nonlocal關(guān)鍵字修飾變量后標識該變量是上一級函數(shù)中的局部變量 ,如果上一級函數(shù)中不存在該局部變量,nonlocal位置會發(fā)生錯誤(最上層的函數(shù)使用nonlocal修飾變量必定會報錯)。
- 兩者使用的范圍不同。 global關(guān)鍵字可以用在任何地方 ,包括最上層函數(shù)中和嵌套函數(shù)中,即使之前未定義該變量,global修飾后也可以直接使用,而 nonlocal關(guān)鍵字只能用于嵌套函數(shù)中 ,并且 外層函數(shù)中定義了相應(yīng)的局部變量 ,否則會發(fā)生錯誤(見第一)
原文:https://blog.csdn.net/xcyansun/article/details/79672634
DEMO3
def
myfun
(
)
:
global
count
global
count1
count
=
20
count1
=
5
return
10
count
=
5
print
(
myfun
(
)
)
print
(
count
)
print
(
count1
)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
