Python 3.x flake8:F821全局变量的未定义名称
我已编辑脚本以删除除一个警告之外的所有flake8警告:Python 3.x flake8:F821全局变量的未定义名称,python-3.x,pep8,flake8,Python 3.x,Pep8,Flake8,我已编辑脚本以删除除一个警告之外的所有flake8警告: /tmp/flake8.tempfile.py:535:26: F821 undefined name 'salt' /tmp/flake8.tempfile.py:536:29: F821 undefined name 'salt' /tmp/flake8.tempfile.py:554:22: F821 undefined name 'salt' /tmp/flake8.tempfile.py:602:21: F821 unde
/tmp/flake8.tempfile.py:535:26: F821 undefined name 'salt'
/tmp/flake8.tempfile.py:536:29: F821 undefined name 'salt'
/tmp/flake8.tempfile.py:554:22: F821 undefined name 'salt'
/tmp/flake8.tempfile.py:602:21: F821 undefined name 'salt'
/tmp/flake8.tempfile.py:602:32: F821 undefined name 'salt'
/tmp/flake8.tempfile.py:609:21: F821 undefined name 'salt'
/tmp/flake8.tempfile.py:609:32: F821 undefined name 'salt'
/tmp/flake8.tempfile.py:623:44: F821 undefined name 'salt'
/tmp/flake8.tempfile.py:646:39: F821 undefined name 'salt'
/tmp/flake8.tempfile.py:651:39: F821 undefined name 'salt'
/tmp/flake8.tempfile.py:654:39: F821 undefined name 'salt'
...
salt是一个hashlib-ojbect,被许多函数使用。它在脚本的主要部分(底部)中定义,行为:
salt = hashlib.sha512()
在使用数据更新之前。我的所有其他全局文件都工作正常,所以我不知道为什么这一个会使flake 8变小。如果您有像
# file_a.py
import hashlib
def my_func():
...
if salt == ... :
...
if __name__ == '__main__':
salt = hashlib.sha512()
my_func()
然后在调用python文件_a.py
时,它将正常运行,但语法检查器将抛出警告,因为可能没有定义salt
例如,如果在同一文件夹中创建另一个文件,如
# file_b.py
from file_a import my_func()
如果uuu name uuu=='uuuu main uu':没有被调用,因为file_a.py
不是“main”文件,那么您将不会被定义为中的部分
如果要定义常数,则需要在外部定义它–最好在文件顶部:
# file_a.py
import hashlib
SALT = hashlib.sha512()
def my_func():
...
if SALT == ... :
...
if __name__ == '__main__':
my_func()
但最有可能的是,最好避免使用常量,而是使用关键字参数
我希望这就是正在发生的事情。如果我完全退出了,那么我很抱歉,但是在这种情况下,您需要提供更多的代码,这是一个类似这样的猜测游戏:)如果您有一个像
# file_a.py
import hashlib
def my_func():
...
if salt == ... :
...
if __name__ == '__main__':
salt = hashlib.sha512()
my_func()
然后在调用python文件_a.py
时,它将正常运行,但语法检查器将抛出警告,因为可能没有定义salt
例如,如果在同一文件夹中创建另一个文件,如
# file_b.py
from file_a import my_func()
如果uuu name uuu=='uuuu main uu':
没有被调用,因为file_a.py
不是“main”文件,那么您将不会被定义为中的部分
如果要定义常数,则需要在外部定义它–最好在文件顶部:
# file_a.py
import hashlib
SALT = hashlib.sha512()
def my_func():
...
if SALT == ... :
...
if __name__ == '__main__':
my_func()
但最有可能的是,最好避免使用常量,而是使用关键字参数
我希望这就是正在发生的事情。如果我完全退出了,那么我很抱歉,但是在这种情况下,您需要提供更多的代码,这是一个类似这样的猜测游戏:)我将文件的整个主要部分包装在一个:
if __name__ == "__main__":
问题神奇地消失了。没有解释原因,但至少有一天这可能会帮助其他人解决同样的问题。我将文件的整个主要部分包装在一个:
if __name__ == "__main__":
问题神奇地消失了。没有解释为什么,但至少有一天这可能会帮助其他人解决同样的问题。但是如果中定义了salt
,如果
并且您从另一个脚本导入了模块(这样\uuuuuu main\uuuuuuu
-东西就不会被执行),有没有一个地方salt
未定义?这不是一个模块。这是直接运行的主文件。我在下面的回答中解释了我猜测发生了什么。非常感谢您的回复,但我将整个主部分放在了“if name==“main”:“中,问题神奇地消失了。哦,好吧。但是如果salt
是在中定义的,如果name\uuu=''uuuuu main\uuuuuu':
并且你从另一个脚本导入了你的模块(这样\uu main\uuuuuuuu
-东西就不会被执行),会有一个地方salt
是未定义的吗?这不是一个模块。这是直接运行的主文件。我在下面的回答中解释了我猜测发生了什么。非常感谢您的回复,但我将整个主部分放在了“if name==“main”:“中,问题神奇地消失了。哦,好吧。