Python 局部變數與全域變數

來源:互聯網
上載者:User

標籤:error   class   code   oba   global   erro   turn   var   聲明   

本來以為 局部變數就是在函數/def/class/lambda內部的變數,全域變數就是在之前這些之外的變數。但是,再一次學習Python atm 中應用時發現了一次特例(意外)

字典中 在函數內部改變 其部分值之後,在函數外列印字典,字典的值竟然改變了。

x = {"w":1,"k":2}def a(x):       x["w"] = 123    x = {"w":999,"k":3433}    return xdef v():        c = a(x)    print(x)v()    

於是上網搜了一下 Python 全域變數與局部變數定義

1.定義的函數內部的變數名如果第一次出現,且在 = 前 那麼就認為被定義的函數是局部變數,不論是否全域變數中是否用到該函數名

num = 10def func():     num  = 19     print(num) #值為19func()print (num) #值為10

再者

num = 10def func():     num  = num + 19     print(num) func()print (num)

將報錯 :unboundlocalerror

num = 10def func(num):     num  = num + 19     print(num) func(num)print (num)

在函數中傳入參數則不會, 此時 num在函數中是全域變數

2. global 聲明全域變數

d = 6def a():    global d    print(d)    d = d + 2131    def v():        c = a()    print(d)v()    

在函數內部聲明global之後,修改d的值,則全域變數值改變。(此函數不能傳入參數d,否則global d則會報錯)

3.有時候想在函數內部引用全域的變數,疏忽就會出現下列錯誤:

var = 1def fun():    print(var)    var = 300print(fun())------------------------------------------var = 2def fun():    var =var + 2    return varprint(fun())

4.字典

x1 = {"w":1,"k":2}x2 = {"o":3,"p":2}def a(x2):        x1["w"] = 123    x2 = {"o":999,"p":343}    return x1,x2def v():        c = a(x2)    print(x1,x2)v()    

{‘k‘: 2, ‘w‘: 123} {‘p‘: 2, ‘o‘: 3}

x1 = {"w":1,"k":2}x2 = {"o":3,"p":2}def a(x1,x2):        x1["w"] = 123    x2 = {"o":999,"p":343}    return x1,x2def v():        c = a(x1,x2)    print(x1,x2)v()    

輸出值:{‘k‘: 2, ‘w‘: 123} {‘p‘: 2, ‘o‘: 3}

Python 局部變數與全域變數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.