pylint:全局变量未分配

时间:2020-02-28 09:12:24

标签: python global-variables pylint

代码:

assets = {}                # line 1

def myfunc():
    global assets          # line 4

    if assets.get("a", None) is None:
        assets["a"] = 2

pylint结果:

C:  1, 0: Invalid constant name "assets" (invalid-name)
C:  4, 4: Invalid constant name "assets" (invalid-name)
W:  4, 4: Using global for 'assets' but \
    no assignment is done (global-variable-not-assigned)

该函数将不止一次被调用一次,所以我只想(在现实生活中一些耗时的过程)才赋值一次。

我应该如何正确做?

p.s .:谢谢@deceze,我感到困惑的是,如果我使用assets = {}而不是assets = {"a":2},则行为将完全不同。

1 个答案:

答案 0 :(得分:4)

短绒棉inter告诉您您没有分配给assets ,意思是assets = ...。这意味着您不需要global assets。反之,要读取,外部作用域中的变量assets将在myfunc内部可用。如果要为外部作用域中的变量分配不同的值,则仅需要globalassets['a'] = 2并没有为其分配其他值,只是对现有值进行变异

因此,请删除global assets行。