在PyCharm中提示:shadows name ‘xxxx’ from outer scope,当在外部有个相同名称的变量在方法内部被重新指定了新的值,也就是说你在外部的相同名称的变量压根就没有任何作用。所以PyCharm就会提示这个信息。
1. Python的变量作用域
最内层为local,外层为nonlocal,模块对应global。
变量查找的顺序:内层作用域 local (最内层函数)-> 外层 nonlocal(外层函数) -> 全局 global (模块)-> builtin (命名空间)
只有class、def和lamda会改变作用域。
在某个函数内写变量的时候,如果没有给这个局部变量指明 nonlocal / global, 那就是在局部作用域中定义了一个新的局部变量。
示例1:
def a():
param = 'v2'
# 这里就会出现这样的提示,因为在main中也定义一个param变量
# 波浪线提示的意思:屏蔽了外层作用域的同名变量。
print(param) # 打印的是局部变量param
if __name__ == "__main__":
param = 'v1'
a()
print