在python開發(fā)中,變量也是有生命周期的,一旦周期結(jié)束,程序會(huì)自動(dòng)清理暫用的空間,釋放內(nèi)存,變量分為兩者,一種是局部變量,一種是全局變量,兩者具體有什么區(qū)別呢……
成都創(chuàng)新互聯(lián)公司是一家以重慶網(wǎng)站建設(shè)公司、網(wǎng)頁設(shè)計(jì)、品牌設(shè)計(jì)、軟件運(yùn)維、seo優(yōu)化、小程序App開發(fā)等移動(dòng)開發(fā)為一體互聯(lián)網(wǎng)公司。已累計(jì)為成都崗?fù)?/a>等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開發(fā)服務(wù)。
?
?
一般而言在函數(shù)內(nèi)部或者類中聲明的變量默認(rèn)都是局部變量。一旦函數(shù)結(jié)束,變量的生命周期也會(huì)結(jié)束,占用的空間會(huì)被自動(dòng)釋放。
1 2 3 4 5 6 7 8 | deffunc1(): ????# 在函數(shù)內(nèi)部定義的變量默認(rèn)都是局部變量 ????a=1 ????print(a) ????# 函數(shù)結(jié)束,局部變量a的生命周期結(jié)束 ? # 由于a是局部變量,并且a的生命周期已經(jīng)結(jié)束,外部再次調(diào)用局部變量a,程序會(huì)產(chǎn)生異常,崩潰 print(a) |
程序報(bào)錯(cuò):NameError: name ‘a(chǎn)’ is not defined ,原因:函數(shù)內(nèi)部定義的局部變量只能在函數(shù)內(nèi)部使用。
?
全局變量和局部變量相反,在函數(shù)外部或者類外部聲明的變量默認(rèn)為全局變量。全局變量的生命周期直到程序結(jié)束才會(huì)結(jié)束,比局部變量生命周期更長(zhǎng)。
1 2 3 4 5 6 7 8 9 | a=2 deffunc1(): ????print(a) ????# 函數(shù)結(jié)束,局部變量的生命周期結(jié)束 ????# 全局變量直到程序結(jié)束,生命周期才結(jié)束 ? func1() # 輸出全局變量a print(a) |
輸出結(jié)果:
1 2 | 2 2 |
?
1.全局變量的生命周期是直到程序結(jié)束,而局部變量生命周期是函數(shù)結(jié)束;
2.如果需要在函數(shù)內(nèi)部修改全局變量的值,需要在函數(shù)內(nèi)部為該全局變量前面加上?global 關(guān)鍵字,?否則該變量默認(rèn)為函數(shù)內(nèi)部定義的局部變量,示例代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解憂 @Blog(個(gè)人博客地址): shuopython.com @WeChat Official Account(微信公眾號(hào)):猿說python @Github:www.github.com @File:python_global.py @Time:2019/10/10 21:00 ? @Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅(jiān)持不懈地積累! """ # 在函數(shù)內(nèi)部定義的變量默認(rèn)都是局部變量 a=2 deffunc1(): ????# global a # 聲明 a 是全局變量,在該函數(shù)內(nèi)部對(duì)a的操作就是對(duì)全局變量a的操作 ????a=1??????# 如果沒有上一行代碼,默認(rèn)a就是函數(shù)內(nèi)部的局部變量,函數(shù)結(jié)束,生命周期結(jié)束 ????print(a) ????# 函數(shù)結(jié)束,局部變量的生命周期結(jié)束 ? ? func1() # 輸出全局變量a print(a) |
輸出結(jié)果:
1 2 | 1 2 |
是不上覺得很奇怪:為什么最后一個(gè)值是2,應(yīng)該是1才對(duì)?
因?yàn)闆]有第17行代碼的話,默認(rèn)a只是函數(shù)內(nèi)部的一個(gè)普通局部變量,所以函數(shù)內(nèi)部的print函數(shù)輸出到控制臺(tái)是1;函數(shù)結(jié)束,函數(shù)內(nèi)部的局部變量a值生命周期結(jié)束,執(zhí)行fun1函數(shù)之后的print函數(shù)輸出的是全局變量a的值2.
也就是說函數(shù)內(nèi)部對(duì)a值得修改并沒有成功,只有在函數(shù)內(nèi)部,為全局變量加上關(guān)鍵字global聲明為全局變量,才能修改成功,取消第17行得注釋,控制臺(tái)輸出:
1 2 | 1 1 |
?
?
1.注意局部變量和全局變量的生命周期;
2.如果想在函數(shù)內(nèi)部修改全局變量的值,需要加上關(guān)鍵字global;
?
1.python變量
2.pycharm設(shè)置頭文件模板
?
轉(zhuǎn)載請(qǐng)注明:猿說Python???python局部變量和全局變量
?
名稱欄目:python局部變量和全局變量
文章位置:http://aaarwkj.com/article2/gjdsic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、靜態(tài)網(wǎng)站、App設(shè)計(jì)、網(wǎng)站內(nèi)鏈、品牌網(wǎng)站設(shè)計(jì)、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)