作用域和命名空间
1 作用域
1.1 作用域简介
作用域直白来说就是产生作用的区域
程序中指的是:变量生效的区域
y = 2
def fn():
x = 1
print("函数内部y = ",y)
fn()
print("函数外部y=",y)
1.2 全局作用域
全局作用域就是在全局都有效
全局作用域的生命周期:全局作用域在程序执行时创建,在程序执行解释时销毁
所有函数以外的都是全局作用域
只要代码不是在函数里面的都是全局作用域
y = 2
def fn():
x = 1
print("函数内部y = ",y)
fn()
print("函数外部y=",y)
1.3 函数作用域(局部作用域)
生命周期:在函数调用时创建,在调用结束时销毁
在函数作用域中定义的变量只能在函数内部访问,或者说在函数作用域中定义的变量,都可以叫做局部变量
def fn():
a = 10
print("内部a=",a)
print("外部a = ",a) # 报错,在函数外部是无法范文的
def fn1():
a = 30
def fn2():
print(a)
fn2()
fn1()
可以从小的往大的看,但是不能从大的往小的看
def fn1():
def fn2():
a = 10
print(a) # 不能从外往里看
fn1()
# 使用变量的时候,会优先在当前作用域中寻找该变量,没有就继续往上一级作用域寻找
def fn1():
a = 20
def fn2():
a = 10
print(a)
fn2()
fn1()