块级作用域
python没有块级作用域1234567if 1 == 1: name = "Layne"print name # 输出 Layne for i in range(10): age = iprint age # 输出 9
这是因为在Python中是没有块级作用域的,代码块里的变量,外部可以调用,所以可运行成功
局部作用域
函数是个单独的作用域,Python中没有块级作用域,但是有局部作用域123def func(): name = "Layne" ## name 定义在函数体内print name # 报错:name 'name' is not defined
运行报错,name变量只在func()函数内部中生效,所以在全局中是没法调用的
作用域链
|
|
f1()执行完会输出Kevin;记住一个概念,Python中有作用域链,变量会由内到外找,先去自己作用域去找,自己没有再去上级去找,直到找不到报错
全局作用域
|
|
结果输出 Layne。 函数f1()与 name=”Layne” 在一个作用域链函数内部没有变量是会向外找,所以此时变量name值为”Layne”