2009-10-21 125 views

回答

30

我认为“铸造”不应该用于Python;只有类型转换,但没有转换(在C语言中)。类型转换例如是完成的通过其中对象o被转换成一个整数(实际上,一个整数对象是由o构造的)。强制在二元操作的情况下发生:如果您执行x+y,并且x和y具有不同的类型,则在执行操作之前它们被强制为单一类型。在2.x中,一个特殊的方法__coerce__允许对象控制它们的强制。

38

演员是明确的。胁迫是隐含的。

在Python的例子是:

cast(2, POINTER(c_float)) #cast 
1.0 + 2 #coerce 
1.0 + float(2) #conversion 

演员真的只在C FFI出现。通常称为C或Java中的转换在Python中称为转换,尽管它通常被称为转换,因为它与其他语言相似。几乎所有我用过的语言(包括python)Coercion都是隐式类型改变。

+2

-1。这是C++命名法; Python使用不同的术语。 – SamB

+12

+1:对于这个问题,这个例子是完全有效的。它明确标记为C++。 – user183037

+2

这个问题是关于Python语言环境中的“cast”一词的。解释“float(1)'是施工而不是施工的答案是更好的。 –