Python之函数-作用域和嵌套函数
作用域
- 一个标识符的可见范围,这就是标识符的作用域。一般常说的是变量的作用域
- 每一个函数都会开辟一个作用域
作用域分类
- 全局作用域
- 在整个程序运行环境中都可见
- 全局作用域中的变量称为全局变量global
- 局部作用域
- 在函数、类等内部可见
- 局部作用域中的变量称为局部变量,其使用范围不能超过其所在局部作用域
- 也称为本地作用域local
函数嵌套
- 在一个函数中定义了另外一个函数
- 内部函数inner不能在外部直接使用,会抛NameError异常,因为它在函数外部不可见。
- 其实,inner不过就是一个标识符,就是一个函数outer内部定义的变量而已。
作用域:标识符的可见范围
- 函数开辟了一个作用域,x被限制在当前函数作用域中,对外不可见
- 全局的,函数外的变量,对内穿透
- 本地使用标识符,优先使用当前作用域
- 优先使用本地定义的局部变量,优先原则
def fn():
x = 100
print(x, '~~~~~~~~~~')
x
fn()
y = 100
def fn2():
c = 1000
print(y)
print(c)
fn2()
c
函数嵌套
1. def outer():
2. o = 65
3. def inner():
4. print('in inner', o, chr(o))
5. inner()
6. print('in outer', o, chr(o))
1.
2.
3.
4.
5.
6.
outer()
chr(65), chr(97), ord('A'), ord('a')
def outer1():
o = 65
def inner():
o = 97
print('in inner', o, chr(o))
inner()
print('in outer1', o, chr(o))
outer1()
JS风格的函数调用与结果显示。
def outer2():
def inner():
o = 97
print('in inner', o, chr(o))
inner()
print('in outer', o, chr(o))
outer2()