# 定义一个全局变量
name="tom"
# 函数中定义一个局部变量
def test():
name="jerry"
print("函数中访问name:",name)
test() #运行函数
print("函数外访问name:",name)
输出结果:
函数中访问name: jerry
函数外访问name: tom
正常情况下,变量数据的访问 :
函数中如果出现了和全局变量重名的变量 :
1.函数外部访问: 优先访问 全局变量
然后访问 局部变量【错误】
2.函数内部访问: 就近原则:谁离访问代码近~优先访问谁
接下来,出个小问题考考大家~
请分析下面代码是否出现问题? 简要说明问题出现的原因。
name="tom"
def test():
print("访问数据:",name)
name="jerry"
print("访问数据:",name)
test()
答:1.结论:有问题
2.结果:第4行代码会出现错误
3.原因:因为函数中没有global引入不可变类型name,所以6行的声明的name是一个局部变量 函数中访问name都是访问局部变量name,第4行代码在name局部变量声明之前进行调用|访问,这是语法错误。