Python - 获取语法警告 - 如何阻止它们?

时间:2015-09-16 18:38:17

标签: python

我继续收到此警告:

    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>

2 个答案:

答案 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行,其中一行是。