下載Python

公司主營業務:成都網站制作、成都網站設計、移動網站開發等業務。幫助企業客戶真正實現互聯網宣傳,提高企業的競爭能力。創新互聯建站是一支青春激揚、勤奮敬業、活力青春激揚、勤奮敬業、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創新互聯建站推出湖北免費做網站回饋大家。
元組(tuple)、數值型(number)、字符串(string)均為不可變對象,而字典型(dictionary)和列表型(list)的對象是可變對象。
1、在函數外部定義一個x=1,在函數內部可以進行引用打印出來
x=1
def test():
print(x)
test()
結果
2、在函數外部定義一個x=1,在函數內部再定義一個x=2,這種情況等于定義了兩個內存空間不同的x變量,所以的值也就不同。
x=1
def test():
x=2
print(x)
test()
print(x)
結果
3、如果在函數內對函數外定義的不可變對象進行修改的話,會有報錯
4、如果在函數內對函數外定義的全局不可變對象進行修改的話,同樣也會報錯
5、但是,如果在函數內將函數外定義的不可變對象設為全局變量的話,可以修改函數外部變量,因為在函數內將外部變量定義為全局的了。
x=1
def test():
global x
x=x+1
print(x)
test()
print(x)
結果
6、如果函數外部函數是一個可變對象的話,在函數內部可以引用它的值,也可以對它進行改變。
x=[]鄭州婦科醫院 http://www.ytsgfk120.com/
print(x)
def test():
x.append(1)
print(x)
test()
print(x)
結果:
7、今天發現之前用的一種錯誤的使用方法,就是我把函數的默認參數設成了一個不可變對象,但是函數的默認變量是在函數初始化時就綁定了了內存地址的,對于不可變對象,改變的時候其實已經改變了內存地址,所以函數里的默認值還是一開始定義的不可變對象的值。
token=1
def test(token=token):
print(token)
test()
token=token+1
test()
結果:
8、如果把函數的默認參數設為一個可變對象的話,內存地址是同一個,那么每次使用該默認參數的時候,其實更改的是同一個變量,函數里的默認值會發生改變。
token=[]
def test(token=token):
print(token)
test()
token=token.append(1)
test()
總結:函數的默認值最好是一個固定不會發生變化的值,如果在函數內要改變外部定義的不可變對象的話,需要使用global將改對象定義為全局的。我自己都繞暈了,反正默認值最好是不會變的就好了,會變的值就不要設為默認值了,用全局變量吧。。這個問題我在用token的時候遇到了,我把token設為了函數的默認值,但是token是字符串是不可變對象,所以即使全局的token值定時更新了,函數默認值的那個token還是一開始那個,時間到就過期不能用了。
文章題目:python中函數與全局變量的常見問題和解決方法
URL分享:http://www.yijiale78.com/article20/pcsgco.html
成都網站建設公司_創新互聯,為您提供定制網站、自適應網站、Google、用戶體驗、網站導航、域名注冊
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯