PyCharm 警告局部变量可能被引用
PyCharm warns local variable might be referenced
为什么 PyCharm 用 Local variable "boolean" might be referenced before assignment
突出显示 return
附近的 boolean
变量?
此代码检查一个数是否为素数:
import random
import math
import time
def prime_t(x):
print x
if x < 2:
return False
if x == 2:
return True
if x == 3:
return True
for i in range(2, int(math.sqrt(x))+1):
if x % i == 0:
boolean = False
break
else:
boolean = True
return boolean
random.seed()
how_much = input()
start = time.time()
for i in range(0, how_much):
print(prime_t(random.randint(0, 1000)))
print time.time()-start
我读到这可能是全局变量的一些问题,但没有可以在 prime_t()
中使用的变量。我有类似的事情 - 执行代码时出现异常,但我认为它已被 if x == 2
和 if x == 3
.
消除
还有什么问题?
PyCharm 不确定 boolean
将被设置。它不够聪明,无法计算出您的代码流程,因此它不知道您的for
循环将始终至少1次迭代(因为到那时 x > 3
为真)。
相反,它假定 for
循环中绑定的变量可能 可能 永远不会被设置,因此会引发此警告。
解决方法当然是在循环之前设置boolean = False
,只是为了关闭它。这只是一个警告,您也可以忽略它,因为 IDE 试图帮助您但被误解了。
对于那些想忽略这一点的人,输入
# noinspection PyUnboundLocalVariable
线以上。
感谢:https://github.com/whitews/pc-inspection-suppression-list/blob/master/suppress-inspection.csv
为什么 PyCharm 用 Local variable "boolean" might be referenced before assignment
突出显示 return
附近的 boolean
变量?
此代码检查一个数是否为素数:
import random
import math
import time
def prime_t(x):
print x
if x < 2:
return False
if x == 2:
return True
if x == 3:
return True
for i in range(2, int(math.sqrt(x))+1):
if x % i == 0:
boolean = False
break
else:
boolean = True
return boolean
random.seed()
how_much = input()
start = time.time()
for i in range(0, how_much):
print(prime_t(random.randint(0, 1000)))
print time.time()-start
我读到这可能是全局变量的一些问题,但没有可以在 prime_t()
中使用的变量。我有类似的事情 - 执行代码时出现异常,但我认为它已被 if x == 2
和 if x == 3
.
还有什么问题?
PyCharm 不确定 boolean
将被设置。它不够聪明,无法计算出您的代码流程,因此它不知道您的for
循环将始终至少1次迭代(因为到那时 x > 3
为真)。
相反,它假定 for
循环中绑定的变量可能 可能 永远不会被设置,因此会引发此警告。
解决方法当然是在循环之前设置boolean = False
,只是为了关闭它。这只是一个警告,您也可以忽略它,因为 IDE 试图帮助您但被误解了。
对于那些想忽略这一点的人,输入
# noinspection PyUnboundLocalVariable
线以上。
感谢:https://github.com/whitews/pc-inspection-suppression-list/blob/master/suppress-inspection.csv