Python 在全局变量中的问题
一道笔试题参考:
请分析下面代码是否出现问题,
简要说明问题出现的原因。
'''
name = "tom"
def test():
print("访问数据:", name)
name = "jerry"
print("访问数据:", name)
test()
'''
- 结论:有问题
- 结果:在函数定义下面第一行代码中出现错误
- 原因:函数中没有global 引入不可变数据类型name,所以代码:name = "jerry" 是一个局部变量。函数中访问的name都是访问的局部变量name,在第三行代码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.