簡體   English   中英

python 用全局變量給出 NameError

[英]python giving NameError with global variable

有人可以幫我理解為什么會拋出 NameError 嗎? 我正在定義和初始化“cnt”,然后將其聲明為全局的,但我收到一個 NameError,指出“cnt”未定義。

def my_func():
  cnt = 0

  def add_one():
    global cnt
    cnt = cnt + 1

  print(cnt)
  add_one()
  print(cnt)

cnt 就在 my_func() 和 add_one() 中找不到它。 您應該在 My_func() 中將其全局化,然后 add_one() 可以訪問它

def my_func():
  cnt = 0
  global cnt
  def add_one():
    cnt = cnt + 1

  print(cnt)
  add_one()
  print(cnt)

在python中,該變量具有三種作用域:local、nonlocal和global。

  • 一個變量在function,這個變量的scope是局部的。
  • 一個function之外的變量,變量的scope是全局的。
  • 對於嵌套函數,如果一個變量在外層function,它的scope對於內層function是非局部的。如果內層function要訪問外層function中的變量,需要使用nonlocal關鍵字。

因此,將global cnt更改為nonlocal cnt ,代碼將起作用。

這篇文檔可以幫助你理解 python 中的變量作用域:
Python Scope 的變量

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM