为什么PyCharm使用boolean
突出显示return
附近的Local variable "boolean" might be referenced before assignment
变量?
此代码检查数字是否为素数:
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
消除了。
还有什么问题?
答案 0 :(得分:8)
PyCharm不是某些,boolean
将被设置。计算代码流程并不够智能,因此它 知道您的for
循环将始终至少1次迭代(因为那时x > 3
为真)。
相反,它假定for
循环中绑定的变量可能可能永远不会被设置,从而引发此警告。
解决方法当然是在循环之前设置boolean = False
,只是为了关闭它。这只是一个警告,你也可以忽略它,因为IDE试图帮助你,但却被误解了。