全局变量与局部变量,闭包变量的区分
先扩展:
- ) 内建作用域:系统的函数和变量,在所有的文件中都可以使用
例:print(max(1,2,344,55)) # max属于内建作用域 - )全局作用域:在一个代码文件中,变量(必须在函数外定义) 从定义开 始到本文件结束
- )闭包作用域:嵌套函数中,外部函数里 变量从定义开始到函数结束
- )局部作用域: 在一个函数里,变量从定义开始到函数结束
- )内建作用域 > 全局作用域 >闭包作用域>局部作用域
6 .) 变量同名问题: 变量查找规则: 从下往上,从里往外
(一)-------------------先区分全局变量与局部变量
1.全局变量的调用
name='小明' #全局变量(公共的,函数外定义,大家都可以调用)
def func():
print(name) #调用的是全局变量
func()
print(name)
def func1():
print(name) #调用的是全局变量
func1()
>>>小明
>>>小明
>>>小明
2.全局变量和局部重名,在函数里局部优先(例题小红)
name='小明' #全局变量(公共的,大家都可以调用)
def func():
print(name) #调用的是全局变量
def func1():
name="小红" #局部变量
print(name) #有局部变量先调用的是局部变量
func()
func1()
>>>小明
>>>小红
3.在函数,全局变量可以读取,不能直接修改;如果在函数中修改全局变量,必须施工global声明
例如:改变全局变量错误做法