【李刚-21天通关Python-19】之 变量作用域
一、变量作用域
- 根据定义变量的位置,变量的作用域有两种:
- 局部变量:在函数中定义的变量包括参数
- 全局变量:在函数外面、全局范围内定义的变量
# 全局变量
a = 35
def info1 ():
# 局部变量
b = 'python'
print(b) # python
print(a) # 35
def info2 ():
# 局部变量
c = 'java'
print(b) # 错误,局部变量无法访问
print(a) # 35
二、获取变量字典
- globals() :该函数返回全局范围内所有变量组成的变量字典
- locals() :该函数返回当前局部范围内所有变量组成的变量字典
- vars(object) :获取指定对象的范围内所有变量组成的变量字典,如果不传入object参数,vars()和locals()的作用完全相同
三、变量遮蔽
- 全局变量默认可以在所有函数内访问
- 如果在函数中定义了与全局变量同名的变量,此时就会发生局部变量遮蔽(hide)全局变量的情形
name = 'python'
def info ():
# 依然访问全局变量name
pirnt(global()['name'])
# 在函数内对变量赋值,即定义新的name变量
name = 'java'
print(name)
info()
# python
# java
print(name) # python
name = 'python'
def info ():
# 声明name始终使用全局变量
global name
pirnt(name)
# 对全局变量name重新赋值
name = 'java'
print(name)
info()
# python
# java
print(name) # java