全局作用域和局部作用域之间 变量的关系

先说def语句:

定义函数,

如:

def spam(name):

  print("hallo',name)

spam(kd)

执行上面的程序会得到

hallo kd

就是spam()为函数 括号中的name是参数,只要输入相应的参数,为匹配内容,如:

def kd_age(nuber):

  print('your age is ' + nuber)

kd_age(20)

如果执行上面的代码得到的结果是:

your age is 20

现在来说说全局作用域和局部作用域(下面用全局、和局部说明)中的变量关系

我尝试用简单来表述一下:

全局的变量可以给局部使用;

局部的变量不能给全局使用;

当全局和局部的有相同的变量赋值时,局部会优先选择自己的赋值。

我尝试举例子:

def spam():           #就算全局变量和局部变量都是一样,局部变量赋值不会改变全局变量
eggs = 10 #局部变量只作用于局部相应的作用域。
print(eggs) #这里eggs 显示的值是局部 eggs =10 的值
eggs =20
spam() #所以这里显示的是10
print(eggs) #这里eggs 显示的值是全局 eggs = 20 的值

上面执行之后得到的结果是
10
20
按照上面的结果来看,就算全局赋值eggs 为 20 的值,局部还是优先自己 eggs 为 10 的赋值。

global语句
在局部中的变量前面加global,那么这个变量会跟全局变量的等价的
比如:
def test():
  global name
  name = 'kd1'
name = 'kd'
test()
print(test)
结果是:
kd1


原文地址:https://www.cnblogs.com/222kd/p/8342071.html