回覆列表
  • 1 # 使用者2388582881469

    LEGB規則

    名稱空間:一個容器,其中包含的是對映到不同物件的名稱。

    作用域:定義了一個“層次”,我們從其中的名稱空間中查詢特定的“名稱-物件”對映對。

    全域性變數與區域性變數的字典對映,可使用函式和

    LEGB規則,表示的是Local -> Enclosed -> Global -> Built-in

    問題的關鍵就是:

    如果我們沒有明確地告訴Python我們要使用的是全域性作用域,而是直接嘗試修改變數值的話,就很容易產生UnboundLocalError。(記住,賦值操作的右半部分是先執行的)

    eg:

    修改版:加上變數的作用域。

    LEGB - 區域性,外圍,全域性,內建

  • 2 # a不會愛的小笨蛋

    global語句聲明後,指定的變數被認為是函式外的。後面的所有操作都是在操作函式外的那個變數,雖然你是在函式內操作的。雖然Python提供了這個功能,但是應該儘量避免這樣做,因為這使得程式的讀者會不清楚這個變數是在哪裡定義的。

    def func():  global x  print "x is", x  x = 2  print "Changed local x to", xx = 50func()print "Value of x is", x

    執行結果是這樣的x is 50Changed global x to 2Value of x is 2

  • 中秋節和大豐收的關聯?
  • 小蘇打和白醋混合在一起會產生二氧化碳氣體嗎?為什麼?