Python不接受第三个输入

时间:2015-04-13 13:27:30

标签: python

我在python中编写了一个函数,它涉及使用带有三个参数的pow。它工作正常,然后我写了一些不相关的代码到同一个文件后,它一直告诉我,战俘预期两个参数,但得到三,尽管pow的文档说它可以接受三个参数,并在之前工作正常。我使用的是Python 2.7。任何人都知道为什么会发生这种情况?

这是功能:

def fast_is_prime(p,accuracy=64):
    """
    very quickly checks if a number is prime, is wrong with probability at most
    1/2**(accuracy), accuracy default is 64
    """
    if p == 1:
        return False
    return all(pow(random.randint(1,p-1),p-1,p) == 1 for i in range(accuracy))

1 个答案:

答案 0 :(得分:0)

(在得出答案的评论中,学分变为加倍和jonrsharp)

在您的情况下,内置函数pow()pow() from the math module覆盖。使用import math(您在其中使用的函数在这种情况下需要以math.作为前缀)或使用from math import X,其中X是您需要的特定函数。

使用from math import *将math模块中的所有函数导入主命名空间。主命名空间中的任何名称都将被数学模块中的名称覆盖。 Python标准库模块不应该像这样使用。这意味着导入这样的标准库模块可以掩盖内置函数。例如,如果以这种方式导入操作系统,os.open()将掩盖open()。使用import mathfrom math import X,其中X是阻止此操作所需的特定功能。