我在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))
答案 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 math
或from math import X
,其中X是阻止此操作所需的特定功能。