在函数内定义的变量 不能作用到 函数外部
def combine():
num=1return 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)