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

Mik*_*ros 4 python variables function local pycharm

为什么PyCharm彰显boolean附近的变量returnLocal 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
Run Code Online (Sandbox Code Playgroud)

我读过这可能是全局变量的一些问题,但是没有可能会使用的变量prime_t().我有类似的事情-除了在执行的代码,但我认为它已经消除了if x == 2if x == 3.

还有什么可能是问题?

Mar*_*ers 9

PyCharm 不确定是否boolean会被设定.计算代码流是不够智能的,所以它不知道你的for循环总是至少有1次迭代(因为那时x > 3是真的).

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

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

  • 好吧,为了减少不必要的代码,在循环之前设置 `boolean =True` 并从 if 语句中删除 else 部分。 (3认同)

Jos*_*lff 9

对于那些想要忽略这一点的人,请输入

# noinspection PyUnboundLocalVariable
Run Code Online (Sandbox Code Playgroud)

在线以上。

感谢:https://github.com/whitews/pc-inspection-suppression-list/blob/master/suppress-inspection.csv