函数与变量作用域

1 global关键字

函数内部默认只能读取全局变量的值,若需要修改,则需要使用global关键字进行事先声明,否则在函数内修改全局变量会报英文出错.

j=5
k=2
def sum1():
    global j          #声明j为全局变量
    j=j+5             #全局变量+5  变成了新的局部变量
    k=4               #定义了新的局部变量k=4
    return k
print(j,k,sum1(),j,k)

执行结果

5 2 4 10 2     
#k前后的值并未更改
#j前后的值改变了
#函数返回的局部变量k更改     

2 闭包(Closure)

j=5                                    #全局变量j      
def sum0():                            #外部函数sum0
    k=2                                #闭包变量k
    def sum1():                        #嵌套的内部函数sum1
        i=k+j                          #局部变量i
        return i
    return sum1()
print('调用sum0结果%d'%(sum0()))

执行结果

调用sum0结果7
闭包函数定义在外部函数与内部嵌套函数之间
全局变量>闭包变量>局部变量

3 nonlocal关键字

在sum1中声明k才可以对k进行修改,k也变为sum1的局部变量
posted @ 2020-11-14 16:27  17。  阅读(42)  评论(0)    收藏  举报