python 局部变量与全局变量

来源:互联网 发布:ecshop分销源码下载 编辑:程序博客网 时间:2024/05/18 15:55

在函数内定义的变量 不能作用到 函数外部

def combine():

num=1
return num
print (num)


单是 函数外部的全局变量是可以作用到函数内部的

def combine():
return num*2
num=1
print (combine())


如果函数 内定义的变量和函数外部定义的变量重名   可以使用globals()['变量名称']  获得函数外部的变量值

def combine(par):
print (par+globals()['par'])

par='aa'
combine('share')


函数内部如果定义变量想 供函数外部使用可以在声明变量时 将其声明为全局变量

def combine():
global num
num=3
combine()
print (num)

在调用 变量前 先实例化函数



在函数内部定义全局变量且函数外部 有重名 变量时 ,量变量引用同一地址(可通过 id('变量')查看)

gcount = 0

def global_test():
    print (gcount)
    
def global_counter():
    global gcount
    gcount +=1
    return gcount
    
def global_counter_test():
    print(global_counter())
    print(global_counter())
    print(global_counter())


global_counter_test()

输出 123  

这里实现了类似php static 的功能



如果使用了嵌套函数想实现以上global的功能可以使用一下代码

def make_counter():
    count = 0
    def multiplyByFactor():
        nonlocal count
        count += 1
        return count
    return multiplyByFactor


def make_counter_test():
mc = make_counter()
print(mc())
print(mc())
print(mc())
make_counter_test()


总结 由此可见python 变量的作用域 有 局部(local) 非局部(nonlocal)  全局 (global) 



0 0