【发布时间】:2010-12-08 19:07:10
【问题描述】:
在 Python 文档和邮件列表中,我看到值有时是“强制转换的”,有时是“强制的”。
【问题讨论】:
标签: python casting types coercion
在 Python 文档和邮件列表中,我看到值有时是“强制转换的”,有时是“强制的”。
【问题讨论】:
标签: python casting types coercion
演员表是明确的。强制是隐含的。
Python 中的示例如下:
cast(2, POINTER(c_float)) #cast
1.0 + 2 #coerce
1.0 + float(2) #conversion
Cast 真的只出现在 C FFI 中。在 C 或 Java 中通常称为强制转换的东西在 python 中称为转换,尽管由于它与其他语言的相似性,它经常被称为强制转换。在我使用过的几乎所有语言(包括 python)中,Coercion 都是隐式类型更改。
【讨论】:
float(1) 是构造而不是铸造的答案更好。
我认为 Python 不应该使用“强制转换”;只有类型转换,但没有强制转换(在 C 意义上)。完成类型转换,例如通过int(o) 将对象o 转换为整数(实际上,整数对象是由o 构造的)。强制发生在二进制操作的情况下:如果你做x+y,并且 x 和 y 有不同的类型,它们在执行操作之前被强制转换为一个类型。在 2.x 中,一个特殊的方法 __coerce__ 允许对象控制它们的强制。
【讨论】: