在 Python 文档和邮件列表中,我看到值有时是“强制转换的”,有时是“强制的”。
问问题
32918 次
2 回答
42
演员表是明确的。强制是隐含的。
Python 中的示例是:
cast(2, POINTER(c_float)) #cast
1.0 + 2 #coerce
1.0 + float(2) #conversion
Cast 真的只出现在 C FFI 中。在 C 或 Java 中通常称为强制转换的东西在 python 中称为转换,尽管由于它与其他语言的相似性,它经常被称为强制转换。在我使用过的几乎所有语言(包括 python)中,强制转换都是隐式类型更改。
于 2009-10-21T17:11:03.150 回答
32
我认为 Python 不应该使用“强制转换”;只有类型转换,但没有强制转换(在 C 意义上)。例如,通过int(o)
将对象 o 转换为整数来完成类型转换(实际上,整数对象是由 o 构造的)。强制发生在二进制操作的情况下:如果你这样做x+y
,并且 x 和 y 有不同的类型,它们会在执行操作之前被强制转换为单一类型。在 2.x 中,一个特殊的方法__coerce__
允许对象控制它们的强制。
于 2009-10-21T16:55:57.657 回答