小编典典

Python全局/局部变量

python

此代码为何起作用:

var = 0

def func(num):
    print num
    var = 1
    if num != 0:
        func(num-1)

func(10)

但这给出了“分配前引用的局部变量’var’”错误:

var = 0

def func(num):
    print num
    var = var
    if num != 0:
        func(num-1)

func(10)

阅读 218

收藏
2020-12-20

共1个答案

小编典典

因为在第一个代码中,您已经创建了一个局部变量var并使用了它的值,而在第二个代码中,您正在使用局部变量var,而没有对其进行定义。

因此,如果要使第二个功能正常工作,则需要声明:-

global var

在使用该功能之前var

def func(num):
    print num
    var = 1  <--  # You create a local variable
    if num != 0:
        func(num-1)

而在此代码中:

def func(num):
    print num
    var = var <--- # You are using the local variable on RHS without defining it
    if num != 0:
        func(num-1)

更新 :-

但是,按照@Tim的注释,您不应global在函数内部使用变量。最好在使用变量之前先定义变量,然后在中使用它local scope。通常,您应该尝试将limit变量的范围设置为local,甚至在local命名空间limit中将局部变量的范围设置为,因为这样您的代码将更容易理解。

变量范围的增加越多,外部源(不需要使用该源)使用它的机会就越大。

2020-12-20