Python文档指出:

python - 为什么不引发ValueError?-LMLPHP

所以我的代码是:

print(pow(-2,2.1))


此代码应引发ValueError,因为-2和2是有限的,-2是负数,并且2.1不是整数-因此pow(-2,2.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结果。对于
  例如,102返回100,但是10-2返回0.01。如果第二
  参数为负,则必须省略第三个参数。如果z是
  当前,x和y必须为整数类型,并且y必须为非负数。


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

关于python - 为什么不引发ValueError?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54391129/

10-12 16:47
查看更多