[Python] Variable Scope: global, nonlocal

global

global_stmt ::= "global" identifier ("," identifier)*

在 global 中宣告的此層級中的 identifier(s)
將會對應為 global 變數

例:

counter = 0
def func_a():
    global counter
    counter += 2
    print('func_a counter: ' + str(counter))

def func_b():
    global counter
    counter += 3
    print('func_b counter: ' + str(counter))

func_a() # print: 3
func_b() # print: 5

nonlocal

例:

def outer():
  string1 = "outer"
  string2 = "outer"

  def inner():
    nonlocal string1, string2
    string1 = "inner"
    string2 = "inner"
 
  inner()
  print(string1, string2) # print: inner inner

 

Last Updated on 2024/12/21 by A1go

目錄
Bitnami