Python global/local variables

后端 未结 6 1462
没有蜡笔的小新
没有蜡笔的小新 2020-12-01 14:58

Why does this code work:

var = 0

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

func(10)

but this one give

6条回答
  •  没有蜡笔的小新
    2020-12-01 15:31

    Because in the first code, you have created a local variable var and used its value, whereas in the 2nd code, you are using the local variable var, without defining it.

    So, if you want to make your 2nd function work, you need to declare : -

    global var
    

    in the function before using var.

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

    Whereas in this code:

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

    UPDATE: -

    However, as per @Tim's comment, you should not use a global variable inside your functions. Rather deifine your variable before using it, to use it in local scope. Generally, you should try to limit the scope of your variables to local, and even in local namespace limit the scope of local variables, because that way your code will be easier to understand.

    The more you increase the scope of your variables, the more are the chances of getting it used by the outside source, where it is not needed to be used.

提交回复
热议问题