gpt4 book ai didi

python - 访问函数局部变量

转载 作者:行者123 更新时间:2023-11-30 23:31:30 25 4
gpt4 key购买 nike

这段代码

def reportRealDiagnostics():

ranks = 0
class Rank:
def __init__(self):
global ranks
ranks += 1
rank = Rank()

reportRealDiagnostics()

产生

NameError: global name 'ranks' is not defined

我确信这就是您回答问题所需的全部内容。

最佳答案

当您使用全局排名时,它会在全局范围内而不是在封闭范围内查找排名,因此您会收到该错误。您定义的ranks是封闭范围的一部分。

在 Python3 中,这个问题已得到解决,您可以使用 nonlocal 关键字修改 ranks:

def reportRealDiagnostics():
ranks = 0
class Rank:
def __init__(self):
nonlocal ranks
ranks += 1
rank = Rank()

reportRealDiagnostics()

在Python2中你可以将它定义为函数属性:

def reportRealDiagnostics():
class Rank:
def __init__(self):
reportRealDiagnostics.ranks += 1
rank = Rank()
reportRealDiagnostics.ranks = 0
reportRealDiagnostics()
<小时/>

还有其他一些替代方案:nonlocal keyword in Python 2.x

关于python - 访问函数局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19877378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com