pylint:全局变量未分配
pylint: global-variable-not-assigned
代码:
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 = {"a":2}
而不是 assets = {}
,行为将完全不同。
linter 告诉您 没有分配给 assets
,意思是 assets = ...
。这意味着您不需要 global assets
。外部作用域中的变量 assets
将在 myfunc
中可用,无论如何 供阅读 。如果要为外部作用域中的变量分配不同的值,则只需要 global
。 assets['a'] = 2
没有为其分配不同的值,它只是 改变 现有值。
因此,删除 global assets
行。
代码:
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 = {"a":2}
而不是 assets = {}
,行为将完全不同。
linter 告诉您 没有分配给 assets
,意思是 assets = ...
。这意味着您不需要 global assets
。外部作用域中的变量 assets
将在 myfunc
中可用,无论如何 供阅读 。如果要为外部作用域中的变量分配不同的值,则只需要 global
。 assets['a'] = 2
没有为其分配不同的值,它只是 改变 现有值。
因此,删除 global assets
行。