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中,变量有三种作用域:本地、非本地和全局。
- 函数中的变量,变量的作用域是局部的。
- 函数外的变量,变量的作用域是全局的。
- 对于嵌套函数,如果变量在外部函数中,则其作用域对于内部函数是非本地的。如果内层函数要访问外层函数中的变量,需要使用
nonlocal
关键字。
因此,将 global cnt
更改为 nonlocal cnt
,代码将有效。
本文档可以帮助您了解 python:
中的变量作用域
Python Scope of Variables
有人可以帮我理解为什么会抛出 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中,变量有三种作用域:本地、非本地和全局。
- 函数中的变量,变量的作用域是局部的。
- 函数外的变量,变量的作用域是全局的。
- 对于嵌套函数,如果变量在外部函数中,则其作用域对于内部函数是非本地的。如果内层函数要访问外层函数中的变量,需要使用
nonlocal
关键字。
因此,将 global cnt
更改为 nonlocal cnt
,代码将有效。
本文档可以帮助您了解 python:
中的变量作用域
Python Scope of Variables