python:shadows name 'xxxx' from outer scope 警告解决

1,343 阅读1分钟

shadows name ‘xxxx’ from outer scope警告解决

如果你的python代码在执行的时候,出现了上述的错误。这是啥意思呢?
在PyCharm中提示shadows name ‘xxxx’ from outer scope,当你在函数方法外部有个相同名称的变量,然后在函数方法内部被重新指定了新的值
也就是说你在函数外部的相同名称的变量压根就没有任何作用。
所以PyCharm就会提示这个信息。这个时候就需要我们去调整具体代码了。

python的变量的作用域

模块对应global,
最内层为local,
外层为nonlocal
变量查找顺序:内层作用域->外层->全局->builtin
只有classdef和lamda会改变作用域

读取变量的时候,如果local没有,查找nonlocal,然后global
写变量的时候,如果没有指明nonlocal/global, 就是在局部作用域定义一个新的变量

demo

def func():
    param = 'b'  # 这里就会出现这样的提示,因为在main定义的param对象被重新指定了新的值
    print(param)
if __name__ == '__main__':
    param = 'a'
    func()