Python中的全局变量也是在函数之外,函数里面的为局部变量。局部变量只在函数内有效,出了函数以为无法访问。例如:
def test():
a=5
print(a)--->会报错a is not defined,a为局部变量函数之外无法访问。函数内可以访问全局变量
b=5
def test():
a=b
print(a)--->5
Python中在局部中无法改变全局变量的值,只能用全局变量的值,如果在局部中给全局变量赋值,Python只是在局部中再创建了一个
跟全局变量相同的名字的局部变量。 例如:
a=10
def test():
情况1: a=5
print(a)--->5 这个只是新建的一个局部变量
print(a)----->没有改变还是为10
情况2: global a=5;
print(a)-->5 此时由于在局部中显示声明a为全局变量,所以此时的a不是默认创建的局部变量
print(a)--->5
Python中函数可以内嵌一个函数,
def test():
a=5
print(a)-->5
def test1():
情况1: a=6
print(a)--->6
test()1--->6
print(a)--->5
情况2:nonlcal a
a=6 //在此声明这个a不为内部函数的局部变量,这样是改变外部函数的变量给其重新赋值
print(a)--->6
test()1--->6
print(a)--->6
内嵌函数可以引用它的外部函数中的变量,但是也不能改变外部函数变量的值(跟全局变量和局部变量类似)
函数闭包:
>>> def te(x):def tes(y):
return x*y //在内嵌函数中使用外部参数x进行计算 此为闭包
return tes
>>> i=te(2)
>>>
>>> type(i)
<class 'function'>
>>> i(6)
12
Python中如果一次要返回多个类型的值,可以将这些值封装到列表或者元祖 然后返回。