Python &引用;上文定义的重新声明的s未使用“;

Python &引用;上文定义的重新声明的s未使用“;,python,intellij-idea,Python,Intellij Idea,上面的代码在IntelliJ中为第二行给出了这个问题的标题作为警告 我敢肯定,之所以会出现这种警告,是因为在CFG中,由于嵌套循环,可能会有两次连续写入s。到目前为止,我一直忽视这个警告,但为了安全起见,我想要求确认我的假设。你的假设几乎是正确的。名称s被限定为一个整数,该整数的值在封闭循环中从未使用过,也从未更改过,但在嵌套循环中它会反弹为另一个值(尽管这会引起错误)。请注意,第一个赋值不会随着外部for循环的任何迭代而改变 IDE的警告表明循环中的第一个赋值是不必要的,因为s从未更改过。赋值

上面的代码在IntelliJ中为第二行给出了这个问题的标题作为警告


我敢肯定,之所以会出现这种警告,是因为在CFG中,由于嵌套循环,可能会有两次连续写入
s
。到目前为止,我一直忽视这个警告,但为了安全起见,我想要求确认我的假设。

你的假设几乎是正确的。名称
s
被限定为一个整数,该整数的值在封闭循环中从未使用过,也从未更改过,但在嵌套循环中它会反弹为另一个值(尽管这会引起错误)。请注意,第一个赋值不会随着外部
for
循环的任何迭代而改变

IDE的警告表明循环中的第一个赋值是不必要的,因为
s
从未更改过。赋值最好放在
for
循环之外,这样可以防止冗余绑定和重新绑定:

for i in range(10):
    s = 5
    for j in range(10):
        s = min(s)
这就是它所说的。 你在没有使用或定义的情况下重新制作了一些东西。 像我一样,例如:

s = 5
for i in range(10):
    ...
跑 错误,我重新定义了这个函数,据我所知,我不能这样做,我没有让它做任何事情。 虽然我在使用这个函数,但没有意识到我在重新定义它

更正

def car(e):
    color = "blue"
    print(color)

def car(r):

您不断为
s
赋值,但从不使用它。IDE指出没有理由这样做,这似乎是一个合理的假设。由于总是在
s=5
之后运行
for
循环,因此该代码是多余的。如果您正在枚举其他内容,比如可能为空的列表,那么初始化s是有理由的(即使这样,
else
子句也会更好),但这里没有。
def car(e):
    color = "blue"
    print(color)

car(e)