可能会引用PyCharm警告局部变量

时间:2016-12-31 15:01:01

标签: python function variables pycharm local

为什么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 == 2if x == 3消除了。

还有什么问题?

1 个答案:

答案 0 :(得分:8)

PyCharm不是某些boolean将被设置。计算代码流程并不够智能,因此它 知道您的for循环将始终至少1次迭代(因为那时x > 3为真)。

相反,它假定for循环中绑定的变量可能可能永远不会被设置,从而引发此警告。

解决方法当然是在循环之前设置boolean = False,只是为了关闭它。这只是一个警告,你也可以忽略它,因为IDE试图帮助你,但却被误解了。