2016-10-01 61 views
0
for i in range(10): 
    s = 5 
    for j in range(10): 
     s = min(s) 

上面的代码在第二行的IntelliJ中给出了这个问题的标题。“上面定义的没有使用的重新声明的定义”

我敢肯定,警告的发生是因为在CFG中,由于嵌套循环,可能有两个连续写入(无间隔读取)到s。到目前为止,我一直忽视这个警告,但为了保证安全,我想请求确认我的假设。

+0

你留着,而从来没有使用其分配值's'。 IDE指出没有理由这样做 –

+0

这似乎是一个合理的假设。既然你总是在s = 5之后运行'for'循环,那么这段代码是多余的。如果你列举了一些可能为空的列表,那么将有一个初始化s的理由(即使这样,'else'子句会更好),但不在这里。 – tdelaney

回答

0

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

IDE的警告建议循环内的第一个赋值是不必要的,因为s从未更改过。该转让可能也已经好放在for循环,这将防止重复绑定和重新绑定外:

s = 5 
for i in range(10): 
    ... 
0

据它说是。 您可以在不使用或定义它的情况下重新制作一些内容。 像我,例如:

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

def car(r): 

运行

错误,我重新定义功能,不能这样做,因为据我所知,我没有做它做任何事情。 以为我在使用这个函数,没有意识到我正在重新定义它。

校正

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

car(e)