为什么不引发ValueError?

时间:2019-01-27 17:52:52

标签: python python-3.x

Python文档指出:

enter image description here

所以我的代码是:

print(pow(-2,2.1))

此代码应引发ValueError,因为-2和2是有限的,-2是负数,并且2.1不是整数-因此pow(-2,2.1)是未定义的。

1 个答案:

答案 0 :(得分:1)

您正在将内置的pow函数与math.pow的文档混合在一起

有关内置pow功能,请参见此处: https://docs.python.org/3/library/functions.html#pow

  

将x返回幂y;如果存在z,则将x返回到y,   z模(比pow(x,y)%z更有效地计算)。的   两参数形式pow(x,y)等效于使用幂运算符:   x ** y。

     

参数必须具有数字类型。对于混合操作数类型,   适用于二进制算术运算符的强制规则。对于int   操作数,其结果与操作数的类型相同(   强制),除非第二个论点是否定的;在那种情况下   参数将转换为float并传递float结果。对于   例如,10 2返回100,而10 -2返回0.01。如果第二   参数为负,则必须省略第三个参数。如果z是   当前,x和y必须为整数类型,并且y必须为非负数。

还值得注意的是,内置pow函数的结果与使用**的结果相同,即 pow(-2,2.1)等同于(-2) ** 2.1