Python的内置'pow'函数和'**'运算符之间有什么区别?

2024-04-26 12:18:52 发布

您现在位置:Python中文网/ 问答频道 /正文

如果存在**运算符,为什么pow函数存在? 它甚至比功能更快:

from timeit import timeit
print(timeit('pow(3000, 3000)', number=10000))
print(timeit('3000**3000', number=10000))

输出:

1.3396891819999155
1.3082993840000654

Tags: 函数fromimport功能number运算符printtimeit
1条回答
网友
1楼 · 发布于 2024-04-26 12:18:52

我发现pow函数在**运算符上有一个用法。首先,**实际上是提升到一个幂,并应用一个可选的模,如a**b % c。但是如果包含%,则其值不能是None2**3 % None是一个错误pow实际上是{}

所以,如果我想把一个派生值提升到一个幂,我可以使用操作符

>>> def powerizer(db, index, modulus=None):
...     x, y = db.get(index)
...     return x**y % modulus
... 
>>> db = {"foo":[9,3]}
>>> powerizer(db, "foo", 10)
9

但是它在默认的None模上失败

>>> powerizer(db, "foo")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in powerizer
TypeError: unsupported operand type(s) for %: 'int' and 'NoneType'

pow对救援的作用

>>> def powerizer(db, index, modulus=None):
...     x, y = db.get(index)
...     return pow(x, y, modulus)
... 
>>> powerizer(db, "foo", 10)
9
>>> powerizer(db, "foo")
729

相关问题 更多 >