unboundlocalerror在assignmen之前引用了局部变量“i”

2024-10-01 07:29:51 发布

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

我是python的新手尝试执行以下代码:

def dubleIncrement():
    j = j+2

def increment():
    i = i+1
    dubleIncrement()

if __name__ == "__main__":

    i = 0
    j = 0
    increment()
    print i
    print j

但是得到这个错误:

^{pr2}$

有人知道为什么i不是全局的吗


Tags: 代码nameifmaindef错误全局print
1条回答
网友
1楼 · 发布于 2024-10-01 07:29:51

在函数中声明global关键字来访问全局变量,而不是局部变量。i、 e

def dubleIncrement():
    global j
    j = j+2

def increment():
    global i
    i = i+1

请注意,当您在if语句中声明i = 0j = 0时,这是在设置一个全局变量,但由于它不在任何函数的范围内,因此此处不必使用global关键字。在

理想情况下,您应该尽量避免使用全局变量,并尝试将变量作为参数传递给函数(想想当您决定在其他函数中再次使用变量名i和{}时会发生什么情况,可能会发生丑陋的冲突!)。以下是编写代码的一种更安全的方法:

^{pr2}$

相关问题 更多 >