日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python全局变量赋值_Python全局变量和局部变量

發(fā)布時間:2025/3/15 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python全局变量赋值_Python全局变量和局部变量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python中,對于變量作用域的規(guī)定有些不一樣。

在諸如C/C++、java等編程語言中,默認在函數的內部是能夠直接訪問在函數外定義的全局變量的,可是這一點在python中就會有問題。以下是一個樣例。

test.py:

#!/usr/bin/python

COUNT=1

def func():

COUNT = COUNT + 1

func()

Python test.py。會執(zhí)行報錯:

Traceback (most recent call last):

File "test.py", line 8, in

func()

File "test.py", line 6, in func

COUNT = COUNT + 1

UnboundLocalError: local variable 'COUNT' referenced before assignment“UnboundLocalError: local variable 'COUNT' referenced before assignment”的意思是變量COUNT在賦值之前被引用。

這里要知道python和其他編程語言不一樣的地方。像C/C++之類的編程語言。變量名稱實際上是代表的一塊內存區(qū)域。對該變量賦值的意思就是將新的值放入該變量指定的內存區(qū)域。而對于python來說。全部的變量都是對內存區(qū)域的引用,對變量賦值相當于將變量引用的內存從一塊區(qū)域改變到另外一塊存放新值的區(qū)域。

也就是說,C/C++中,變量名和內存區(qū)域的相應關系不會變,變的僅僅是相應內存中存放的值;而在python中,變量僅僅是對存放其值的內存區(qū)域的引用,變量值的改變不是由于變量指向的內存區(qū)域中的值發(fā)生了變化,而是變量引用了新的存放新值的內存區(qū)域。

python中的全部變量都是相當于java中的不可變的變量,不論什么一次值的改變都相應著變量引用內存區(qū)域的變化。

差別例如以下圖1:

圖1 變量的比較

python中有一個id函數,python中有一個id函數。help(id)能夠看到它的說明。例如以下:

Help on built-in function id in module __builtin__:

id(...)

id(object) -> integer

Return the identity of an object. This is guaranteed to be unique among simultaneously existing objects.(Hint: it's the object's memory address.)

(END)簡單地說,id函數反應的是對象的內存地址,看以下的實驗結果:

test.py:

#!/usr/bin/python

COUNT = 1

for i in range(5):

COUNT = COUNT + 1

print id(COUNT)

python test.py執(zhí)行結果:

11031328

11031304

11031280

11031256

11031232這里和上面圖上說明的相吻合,python中每一次賦值都使變量引用的內存空間發(fā)生了改變。

回到上面“referenced before assignment”的錯誤,之所以會發(fā)生這樣的錯誤是由于python在函數中發(fā)現對于COUNT變量的賦值。會將其加入到函數的局部命名空間(實際上,這是在函數執(zhí)行到賦值操作之前發(fā)生的)。

進行賦值操作時。賦值操作符的右邊引用了COUNT變量。而這時COUNT變量僅僅是被加入到了函數的局部命名空間,而沒有被詳細賦值,所以會發(fā)生上面的錯誤。實際上。這里問題就出在賦值操作的地方,由于有賦值操作導致該變量被加入到了函數的局部命名空間。假設沒有賦值,僅僅是引用該變量,是沒有什么問題的,例如以下:

test.py:

#!/usr/bin/python

COUNT=1

def func():

temp = COUNT + 1

print "temp:",COUNT

print "COUNT:",COUNT

func()

python test.py執(zhí)行結果:

temp: 1

COUNT: 1這樣,COUNT變量沒有被加入到函數的局部命名空間,python解釋器在函數的局部命名空間中沒有查找到它。然后。python解釋器會繼續(xù)在全局的命名空間中查找,結果在全局命名空間中找到COUNT的定義并引用它的值,所以程序執(zhí)行沒有不論什么問題。

到這里你可能會問,難道在函數中沒法改動全局變量的值嗎?不是的,假設要在函數中改動全局變量的值,就要在函數中對該變量進行global聲明,以告訴python解釋器,該變量是全局命名空間中的,例如以下:

test.py:

#!/usr/bin/python

COUNT=1

def func():

global COUNT

COUNT = COUNT + 1

print "COUNT:",COUNT

func()

python test.py執(zhí)行結果:

COUNT: 2OK. ^_^

總結

以上是生活随笔為你收集整理的python全局变量赋值_Python全局变量和局部变量的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天堂在线视频免费 | 国产黄色免费观看 | 亚洲午夜久久久久 | 国产精品系列在线 | 性一交一乱一色一免费无遮挡 | www亚洲| 好吊色综合 | 台湾佬美性中文娱乐网 | 亚洲自拍色图 | 毛片av免费看 | 神马久久春色 | 欧美色激情 | 国产区一区二区 | 毛片在线免费观看网站 | 韩国三级bd高清中字2021 | 精品国偷自产一区二区三区 | 九九久久国产视频 | 久久偷看各类女兵18女厕嘘嘘 | 国产精品综合在线 | 毛片高清| 爱情岛论坛av | 波多野结衣一二三四区 | 吃瓜网今日吃瓜 热门大瓜 色婷在线 | 精品在线视频免费观看 | 亚洲精品国产a | 伊人91 | 91丨porny丨九色 | 成人高清视频免费观看 | 成人国产精品免费 | 亚洲黄色大片 | 欧美日韩一级二级 | 久久久久久黄色片 | 一本大道熟女人妻中文字幕在线 | 男生脱女生衣服 | 超碰成人免费电影 | 草草影院在线观看 | 久久国产美女 | 色原网 | 悠悠av | 97av视频| 免费在线观看污网站 | 1024亚洲天堂 | 曰韩av| 日本免费一区视频 | 91精彩视频 | 亚洲精品乱码久久久久久蜜桃不卡 | 神秘马戏团在线观看免费高清中文 | 国产美女永久无遮挡 | 久久伊人久久 | 中文字字幕在线中文乱码电影 | 女人扒开屁股让我添 | 少妇影院在线观看 | 好姑娘在线观看高清完整版电影 | 少妇无码一区二区三区免费 | 久久午夜夜伦鲁鲁片无码免费 | 日韩一区二区三区在线观看视频 | 无码无遮挡又大又爽又黄的视频 | 古装三级吃奶做爰 | 免费成人在线观看视频 | 日韩天堂av | 制服丝袜亚洲色图 | 性中国xxx极品hd | 波多野结衣久久精品 | av在线黄色| 国产高清无密码一区二区三区 | 欧美一级性 | 男人的天堂视频在线观看 | 亚洲一个色 | 操你啦免费视频 | 动漫av在线| 久久久久久久偷拍 | 美女屁股网站 | 欧美性xxxx在线播放 | 久久久久亚洲色欲AV无码网站 | 日韩欧美在线观看一区二区 | 亚洲综合伊人久久 | 熟女少妇一区二区三区 | 久久.com| 免费看色 | 久草福利在线观看 | 五月婷婷俺也去 | 精品久久无码视频 | 国产一区,二区 | 91精品国产乱码久久久久 | 18日本xxxxxxxxx95| 嫩草综合 | 成人免费淫片aa视频免费 | 91中文在线观看 | 寂寞午夜影院 | 龚玥菲三级露全乳视频 | 亚洲精品视频中文字幕 | 夜夜春影院| 94av| 午夜爱爱网站 | 男插女视频在线观看 | 人妻少妇精品中文字幕av蜜桃 | 久久久久成人精品免费播放动漫 | 国产成人自拍网站 | 丰满人妻一区二区三区免费视频棣 |