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

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