Python 如何修复重新声明的警告?
上面定义的重新声明的“i”未使用Python 如何修复重新声明的警告?,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,上面定义的重新声明的“i”未使用 我怎样才能修正这个警告 这是一个警告,因为在Python-2.x中,列表理解中的变量“泄漏”。这意味着这些不是本地范围的。例如: x = [[] for i in range(5)] y = [[] for i in range(10)] 由于您在两个列表理解中都使用了i,因此您将用第二个列表的i覆盖第一个列表中声明的i 如果要消除此错误,可以使用不同的变量名: >>> i = 'somevalue' >>> [[] for
我怎样才能修正这个警告 这是一个警告,因为在Python-2.x中,列表理解中的变量“泄漏”。这意味着这些不是本地范围的。例如:
x = [[] for i in range(5)]
y = [[] for i in range(10)]
由于您在两个列表理解中都使用了i
,因此您将用第二个列表的i
覆盖第一个列表中声明的i
如果要消除此错误,可以使用不同的变量名:
>>> i = 'somevalue'
>>> [[] for i in range(5)]
[[], [], [], [], []]
>>> i
4
正如文件中所述:
如果您需要分配某个变量(例如,在解包中),但不需要该变量,请使用\uuu
(……)
许多Python风格指南建议使用一个下划线
\uu
用于一次性变量,而不是双下划线\u
这里推荐。问题是,\uu
通常用作别名
用于gettext()
函数,也用于交互式
提示保存最后一个操作的值。使用双人床
下划线则同样清晰、方便,而且
消除了意外干扰其中任何一项的风险
其他用例
通常这意味着您已经在该函数的某个地方使用了
i
。这并没有错,但可能很危险,因为大多数人认为(在Python-2.7中)这些变量的作用域是局部的,而不是局部的。如果您使用u而不是i(u明确表示它是一个一次性变量)is\uu
正式声明为这样,或者这仅仅是一种惯例,那么许多linter将保持沉默(正如其他地方所评论的,后面紧跟着“许多linter”只是为了方便)@usr2564301:《搭便车者Python指南》推荐了两个下划线。这两个下划线特别有用,因为像Django这样的库使用\uu
表示gettext()
(进行翻译)。也就是说,如果使用交互式会话,下划线通常会获取最后一次函数调用的输出。
x = [[] for i in range(5)]
y = [[] for j in range(10)]
x = [[] for __ in range(5)]
y = [[] for __ in range(10)]