最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解析python的局部變量和全局變量

 更新時(shí)間:2019年08月15日 11:58:17   作者:三國小夢  
函數(shù)內(nèi)部定義的變量就叫局部變量而如果一個(gè)變量既能在一個(gè)函數(shù)中使用,也可以在其他函數(shù)中使用,這樣的變量就是全局變量。 本文給大家介紹python的局部變量和全局變量的相關(guān)知識,感興趣的朋友一起看看吧

局部變量

什么是局部變量

通俗定義:函數(shù)內(nèi)部定義的變量就叫局部變量。

話不多說,代碼如下:

def test1():
 a = 300 # 定義一個(gè)局部變量a,并初始化300
 print("--test1--修改前:a=%s" % a)
 a = 200 # 給變量a重新賦值200
 print("--test1--修改后:a=%s" % a)
def test2():
 a = 400 # 定義另一個(gè)局部變量a,并初始化400
 print("--test2--修改后:a=%s" % a)
# 分別調(diào)用函數(shù)test1,test2
test1()
test2()

輸出:

--test1--修改前:a=300
--test1--修改后:a=200
--test2--修改后:a=400

結(jié)論:

  1. 局部變量就是在函數(shù)內(nèi)部定義的變量。
  2. 不同的函數(shù)內(nèi)部可以定義名字相同的變量,但它們不會(huì)產(chǎn)生影響。
  3. 局部變量的作用,為了臨時(shí)保存數(shù)據(jù)需要在需要在函數(shù)中定義變量來進(jìn)行存儲。

全局變量

什么是全局變量

定義:如果一個(gè)變量既能在一個(gè)函數(shù)中使用,也可以在其他函數(shù)中使用,這樣的變量就是全局變量。 

代碼如下:

a = 100 # 定義一個(gè)全局變量a,并初始化為100
# 分別定義函數(shù)test1、test2,功能是打印變量a的值
def test1():
 print(a)
def test2():
 print(a)
test1()
test2()
"""
結(jié)果如下:
100
100
"""

如何修改全局變量的值

首先,我們可能是這樣想的:

a = 100 # 定義一個(gè)全局變量a,并初始化為100
# 分別定義函數(shù)test1、test2
def test1():
 print("修改前:a=%s"%a)
 a = 300
 print("修改后:a=%s"%a)
def test2():
 print(2)
test1()
test2()
"""

結(jié)果如下:

UnboundLocalError: local variable 'a' referenced before assignment

異常解釋:局部變量a在被引用前沒有被定義

"""
那我們把函數(shù)test1中的內(nèi)容修改如下:

def test1():
 # print("修改前:a=%s"%a)
 a = 300
 print("修改后:a=%s"%a)

"""
結(jié)果如下:
修改后:a=300
100
"""

這次我們發(fā)現(xiàn),錯(cuò)誤消失了,函數(shù)test2中打印變量a的值并沒有改變還是100,這是為什么呢?

原因:如果一個(gè)全局變量在函數(shù)內(nèi)被重新定義過,再在函數(shù)內(nèi)使用變量則默認(rèn)為局部變量;如果在函數(shù)內(nèi)沒有被定義,直接使用會(huì)被視為全局變量。

此時(shí),函數(shù)test1中的只是定義了一個(gè)名字相同的局部變量而已,并沒有改變?nèi)肿兞康闹怠?/p>

global的使用

這前我們想的法子都不能修改全局變量的值,這下就該認(rèn)識一個(gè)新的關(guān)鍵字 global ,它的功能就是如果需要在函數(shù)內(nèi)定義(修改)全局變量,則要先用global進(jìn)行聲明。

把之前的代碼修改如下:

a = 100 # 定義一個(gè)全局變量a,并初始化為100
# 分別定義函數(shù)test1、test2
def test1():
 global a # 聲明函數(shù)中使用的a是全局變量
 print("修改前:a=%s" % a)
 a = 300
 print("修改后:a=%s" % a)
def test2():
 print(2)
test1()
test2()

"""
結(jié)果如下:
修改前:a=100
修改后:a=300
300
"""

這下終于修改成功了。

可變類型與不可變類型的全局變量

發(fā)現(xiàn)我們之前定義的全局變量是數(shù)字類型,是屬于不可變類型的,那么修改一個(gè)可變類型的全局變量有什么不同呢?

a = [100, 200] # 定義一個(gè)列表全局變量a
# 分別定義函數(shù)test1、test2
def test1():
 print("修改前:a=%s" % a)
 a.append(300)
 print("修改后:a=%s" % a)
def test2():
 print(a)
test1()
test2()
"""

結(jié)果如下:

修改前:a=[100, 200]
修改后:a=[100, 200, 300]
[100, 200, 300]
"""

我們發(fā)現(xiàn)當(dāng)全局變量為可變類型時(shí),即使我們不是用global關(guān)鍵字聲明全局變量,它還是會(huì)被修改。

事實(shí)上:

  • 在函數(shù)中不是用global聲明全局變量時(shí)不能修改全局變量的本質(zhì)是不能修改全局變量的指向,即不能將全局變量指向新的數(shù)據(jù)。
  • 對于不可變類型的全局變量來說,因其指向的數(shù)據(jù)不能被修改,所以不是用global時(shí)無法修改全局變量。
  • 對于可變類型的全局變量來說,因其指向的數(shù)據(jù)可以改變,所以不用global時(shí)可以修改全局變量。

總結(jié)

以上所述是小編給大家介紹的python的局部變量和全局變量,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • Python?Asyncio?庫之同步原語常用函數(shù)詳解

    Python?Asyncio?庫之同步原語常用函數(shù)詳解

    這篇文章主要為大家介紹了Python?Asyncio?庫之同步原語常用函數(shù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • python內(nèi)存占用過多問題以及其解決方案

    python內(nèi)存占用過多問題以及其解決方案

    Python是一種高級編程語言,被廣泛應(yīng)用于各種領(lǐng)域,包括網(wǎng)站開發(fā)、數(shù)據(jù)分析、人工智能等,這篇文章主要給大家介紹了關(guān)于python內(nèi)存占用過多問題以及其解決方案的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • 基于Python制作短信發(fā)送程序

    基于Python制作短信發(fā)送程序

    這篇文章主要為大家詳細(xì)介紹了如何利用Python制作短信發(fā)送程序,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下
    2023-01-01
  • Python抓取百度查詢結(jié)果的方法

    Python抓取百度查詢結(jié)果的方法

    這篇文章主要介紹了Python抓取百度查詢結(jié)果的方法,涉及Python正則匹配及字符串與URL操作的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • python + winrm 實(shí)現(xiàn)遠(yuǎn)程連接Windows服務(wù)器并執(zhí)行指定命令的操作過程

    python + winrm 實(shí)現(xiàn)遠(yuǎn)程連接Windows服務(wù)器并執(zhí)行指定命令的操作過程

    Windows遠(yuǎn)程管理(WinRM)是Windows Server 2003 R2,Windows Vista和Windows Server 2008中一種新式的方便遠(yuǎn)程管理的服務(wù),這篇文章主要介紹了python + winrm 實(shí)現(xiàn)遠(yuǎn)程連接Windows服務(wù)器并執(zhí)行指定命令的操作過程,需要的朋友可以參考下
    2023-10-10
  • python異步存儲數(shù)據(jù)詳解

    python異步存儲數(shù)據(jù)詳解

    這篇文章主要為大家詳細(xì)介紹了python異步存儲數(shù)據(jù)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • 利用Python實(shí)現(xiàn)網(wǎng)絡(luò)運(yùn)維自動(dòng)化的實(shí)戰(zhàn)案例

    利用Python實(shí)現(xiàn)網(wǎng)絡(luò)運(yùn)維自動(dòng)化的實(shí)戰(zhàn)案例

    Python作為一種簡潔而強(qiáng)大的編程語言,已經(jīng)成為網(wǎng)絡(luò)運(yùn)維自動(dòng)化的熱門選擇,本文將介紹如何利用Python實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備配置管理、監(jiān)控和故障排除等自動(dòng)化任務(wù),并提供代碼示例,需要的朋友可以參考下
    2024-03-03
  • python使用xmlrpclib模塊實(shí)現(xiàn)對百度google的ping功能

    python使用xmlrpclib模塊實(shí)現(xiàn)對百度google的ping功能

    這篇文章主要介紹了python使用xmlrpclib模塊實(shí)現(xiàn)對百度google的ping功能,實(shí)例分析了xmlrpclib模塊的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • Python 安裝第三方庫 pip install 安裝慢安裝不上的解決辦法

    Python 安裝第三方庫 pip install 安裝慢安裝不上的解決辦法

    很多朋友反映在使用pip install安裝python 第三方庫的過程中會(huì)出現(xiàn)網(wǎng)速很慢,或者是安裝下載到中途,停止,卡主,或者是下載報(bào)錯(cuò)等問題,下面小編給大家?guī)砹私鉀Q方法,一起看看吧
    2019-06-06
  • Django加載配置的過程詳解

    Django加載配置的過程詳解

    這篇文章主要介紹了Django加載配置的過程詳解,包括Django服務(wù)啟動(dòng) manage.py的詳細(xì)介紹,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05

最新評論

巴南区| 繁昌县| 英吉沙县| 卢氏县| 柳州市| 汉寿县| 海口市| 浠水县| 嫩江县| 宣化县| 拉萨市| 秦安县| 汝南县| 庄河市| 易门县| 阳西县| 盱眙县| 吴忠市| 德州市| 阿瓦提县| 福贡县| 肇源县| 伊吾县| 罗山县| 叶城县| 诏安县| 桑日县| 广丰县| 韩城市| 兰考县| 兴义市| 灵石县| 顺昌县| 改则县| 平和县| 揭东县| 和政县| 永泰县| 大荔县| 若羌县| 台中市|