为什么Python 3.x具有异常的下限(整数)除法行为?

本杰明·克劳福德

由于Python整数除法运算符(a // b)始终会返回一个可以安全存储在中的值,int而不会丢失精度(无论a和b的值如何),为什么以下情况成立?

如果一个或两个操作数均为类型float,则此运算符将返回float

仅当两个操作数均为类型int时,此运算符才会返回int

如果每个实现都__floordiv__返回,是否会更加一致int

马丁·彼得斯(Martijn Pieters)

Python指出这两个参数都被强制转换为通用类型。数值类型文档中

Python完全支持混合算术:当二进制算术运算符具有不同数值类型的操作数时,具有“较窄”类型的操作数将扩展为另一种,其中整数比浮点数窄,比浮点数窄。

并从表达式文档的“算术转换”部分

当以下对算术运算符的描述使用短语“将数字参数转换为通用类型”时,这意味着内置类型的运算符实现如下:

  • 如果一个参数是复数,则另一个参数将转换为复数;
  • 否则,如果其中一个参数为浮点数,则另一个参数转换为浮点;
  • 否则,两者都必须是整数,并且不需要转换。

然后二进制算术运算部分(包括下位除法)使用该措辞:

/(部门)和//(楼科)运营商获得他们的论据商。首先将数字参数转换为通用类型。

楼层划分操作员也不例外。所有算术运算符的行为完全相同。

如果楼层划分的行为有所不同,这将是该规则的例外,从而导致行为不一致,而不是更加一致。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python:为什么不(a,b,c)=(* x,3)

来自分类Dev

为什么Ubuntu使用Python 2.6而不是3.X?

来自分类Dev

Python:为什么不(a,b,c)=(* x,3)

来自分类Dev

为什么Python开发人员使Python 3比Python 2具有更多的括号?

来自分类Dev

循环操作后python3 EOFError,有异常

来自分类Dev

为什么Python2和Python3的行为不同

来自分类Dev

为什么python3.x的fileIO没有`end =“ \ n”`?

来自分类Dev

在Python 3.x中,为什么磁盘上没有itertools共享对象?

来自分类Dev

为什么python 2.7中的dict定义比Python 3.x中的dict定义更快?

来自分类常见问题

Python3整数除法

来自分类Dev

为什么这些看似相同的代码片段的行为不同?(Python 3)

来自分类Dev

从抽象基类继承时,为什么__slots__在Python 2和3中的行为不同

来自分类Dev

为什么此argparse代码在Python 2和3之间的行为不同?

来自分类Dev

为什么此argparse代码在Python 2和3之间的行为不同?

来自分类Dev

为什么这些看似相同的代码片段的行为不同?(Python 3)

来自分类Dev

为什么在使用“ for”循环时发生python 3整数类型迭代问题

来自分类Dev

为什么在Python-3中,范围还没有耗尽?

来自分类Dev

为什么私有__var可以在Class外更改?(Python 3)

来自分类Dev

为什么带有sublime text 3和python 3.8的OpenCV意外退出?

来自分类Dev

为什么在write()之后我的txt文件没有保存-Python 3

来自分类Dev

Python处理3为什么当前工作目录有时不同?

来自分类Dev

为什么 Ubuntu 16.04 带有 Python 3.5 而不是 pip3?

来自分类Dev

带有boto3的AWS Lambda Python S3,不知道为什么我遇到错误

来自分类Dev

为什么Python对象具有以整数表示的属性?

来自分类Dev

为什么在带有 python3 内核的 jupyter-notebook 中,sys.version 显示 2.7.2,而不是 python3.x

来自分类Dev

Python 3 的行为就像 Python 2 除法没有余数,并且打印不是函数

来自分类Dev

Python-具有异常引发的参数检查

来自分类Dev

为什么这个python代码给出[3,3]?

来自分类Dev

为什么这两个类是在python 3.x中执行的,它们是刚刚定义的?

Related 相关文章

  1. 1

    Python:为什么不(a,b,c)=(* x,3)

  2. 2

    为什么Ubuntu使用Python 2.6而不是3.X?

  3. 3

    Python:为什么不(a,b,c)=(* x,3)

  4. 4

    为什么Python开发人员使Python 3比Python 2具有更多的括号?

  5. 5

    循环操作后python3 EOFError,有异常

  6. 6

    为什么Python2和Python3的行为不同

  7. 7

    为什么python3.x的fileIO没有`end =“ \ n”`?

  8. 8

    在Python 3.x中,为什么磁盘上没有itertools共享对象?

  9. 9

    为什么python 2.7中的dict定义比Python 3.x中的dict定义更快?

  10. 10

    Python3整数除法

  11. 11

    为什么这些看似相同的代码片段的行为不同?(Python 3)

  12. 12

    从抽象基类继承时,为什么__slots__在Python 2和3中的行为不同

  13. 13

    为什么此argparse代码在Python 2和3之间的行为不同?

  14. 14

    为什么此argparse代码在Python 2和3之间的行为不同?

  15. 15

    为什么这些看似相同的代码片段的行为不同?(Python 3)

  16. 16

    为什么在使用“ for”循环时发生python 3整数类型迭代问题

  17. 17

    为什么在Python-3中,范围还没有耗尽?

  18. 18

    为什么私有__var可以在Class外更改?(Python 3)

  19. 19

    为什么带有sublime text 3和python 3.8的OpenCV意外退出?

  20. 20

    为什么在write()之后我的txt文件没有保存-Python 3

  21. 21

    Python处理3为什么当前工作目录有时不同?

  22. 22

    为什么 Ubuntu 16.04 带有 Python 3.5 而不是 pip3?

  23. 23

    带有boto3的AWS Lambda Python S3,不知道为什么我遇到错误

  24. 24

    为什么Python对象具有以整数表示的属性?

  25. 25

    为什么在带有 python3 内核的 jupyter-notebook 中,sys.version 显示 2.7.2,而不是 python3.x

  26. 26

    Python 3 的行为就像 Python 2 除法没有余数,并且打印不是函数

  27. 27

    Python-具有异常引发的参数检查

  28. 28

    为什么这个python代码给出[3,3]?

  29. 29

    为什么这两个类是在python 3.x中执行的,它们是刚刚定义的?

热门标签

归档