为什么分配局部变量会改变函数中前几行代码的行为?

2024-10-04 05:19:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在做测试,试图理解这里的文档中写了什么

https://docs.python.org/3/tutorial/classes.html#python-scopes-and-namespaces

我注意到,如果一个函数使用一个未在本地定义的变量,它将使用父范围中设置的变量。但是,如果该函数稍后在函数中设置该变量,它将决定不能使用父作用域中设置的变量并终止

下面的第一个函数起作用,第二个函数不起作用

def printthingy():
    print(foo)
    #foo = 'goodbye world'

def printthinghy2():
    print(foo)
    foo = 'goodbye world'

foo = 'hi world'
printthingy()
printthinghy2()

我希望函数在能够找到foo进行打印方面表现一致。相反,第一个函数起作用,第二个函数给出“赋值前引用的局部变量‘foo’”错误


Tags: 函数文档httpsorgdocsworldfoodef
1条回答
网友
1楼 · 发布于 2024-10-04 05:19:50

了解局部变量和全局变量。在Python中,默认情况下,在函数中分配的每个变量都被视为局部变量,否则被视为全局变量。因此,第一次工作是因为foo被认为是全局的,第二次崩溃是因为它被认为是本地的,但在第一次访问时还没有被分配

相关问题 更多 >