我继续收到此警告:
Warning (from warnings module):
File "C:\Users\finlx\Desktop\file.py", line 49
global m
SyntaxWarning: name 'm' is assigned to before global declaration
我查看了代码,程序运行得很完美,但它给了我大约10个警告(每个警告相同的问题,但是一个不同的变量)是否有一种方法可以禁用此功能,或者我输错了什么?< / p>
答案 0 :(得分:0)
我怀疑你有这样的事情:
>> m = 10
>> def foo():
m = 55
global m
<stdin>:3: SyntaxWarning: name 'm' is assigned to before global declaration
>> foo()
>> m
55
如果是这样,只需先输入global m
声明:
>> m = 10
>> def foo():
global m
m = 55
>> foo()
>> m
55
答案 1 :(得分:0)
Claudiu对你应该做什么的回答是正确的:移动你的全局声明。
尽管Python在函数的任何地方使用global
,但我相信经验表明,由于有人认为订单很重要,“乱序”代码有时会出错。在进行更改时,决定通过引发SyntaxError来避免破坏现有正确工作的代码,而是使用SyntaxWarning进行警告。
如果导入无法修复的代码,则可以在命令行中禁止警告。我相信“-W ignore :: SyntaxWarning”将是适当的咒语,但我还没有测试过。可以按如下方式包装导入。
import warnings
with warnings.catch_warnings():
warnings.simplefilter('ignore', SyntaxWarning)
# simulate import of module giving SyntaxWarning
warnings.warn('bad', SyntaxWarning)
未打印警告。注释掉simplefilter行,其中一行是。