全局变量与局部变量的区别~关于访问的优先级
# 定义一个全局变量
name="tom"
# 函数中定义一个局部变量
def test():
name="jerry"
print("函数中访问name:",name)
test() #运行函数
print("函数外访问name:",name)
输出结果:
函数中访问name: jerry
函数外访问name: tom
正常情况下,变量数据的访问 :
函数中如果出现了和全局变量重名的变量 :
1.函数外部访问: 优先访问 全局变量
然后访问 局部变量【错误】
2.函数内部访问: 就近原则:谁离访问代码近~优先访问谁
接下来,出个小问题考考大家~
请分析下面代码是否出现问题? 简要说明问题出现的原因。
答:1.结论:有问题
2.结果:第10行代码会出现错误
3.原因:因为函数中没有global引入不可变类型name,所以12行的声明的name是一个局部变量 函数中访问name都是访 问局部变量name,第10行代码在name局部变量声明之前进行调用|访问,这是语法错误。
Inspection info: This inspection detects names that should resolve but don't.
Due to dynamic dispatch and duck typing, this is possible in a limited but useful number of cases.
Top-level and class-level items are supported better than instance items.