浮点运算上的(整数)前缀实际上做了什么



在一些示例代码中,我看到使用了以下语法:

float1 = 7.0
float2 = 2.0
result = (int)(float1/float2)

重点似乎是将结果强制为整数,但我找不到任何记录正在使用的(int)语法的地方,或者为什么最好int(float1/float2). 对 int() 本身的调用应该返回零,但(0)(float1/float2)抛出 TypeError 并抱怨零不是可调用的。 很明显,解释器正在尝试执行 int() 引用,但我不清楚为什么它希望在那里找到一个可调用的。

有人可以指出我有关此语法的一些文档吗?

无论谁编写代码,都比Python更依赖于与C更密切相关的语言。在C,C++,Java,C#和其他中,(int)something是将something转换为(int)的语法。在 Python 中,这只是一种奇怪的拼写方式 int(something) . int是将something转换为int的内置函数。

通常,Python 表达式(<expr>)用于其他表达式<expr>其计算结果与 <expr> 相同。参数只能影响优先级,但在这种情况下,它们不会影响。同样,<expr>(...)计算<expr>然后调用结果 - 请注意,<expr>可以是任何表达式,它不限于简单的函数名称。

(x)(y)x(y)相同。 (int)(y)有效,因为int(y)有效。 (0)(y)没有,因为0(y)不起作用。

在此代码中: result = (int)(float/float2)

(int) 是一个表达式,经过计算以返回 int 函数。然后用单个参数调用它,表达式float/float2

它不适用于(0),因为该表达式的结果是一个数字,它不是可调用的类型,正如TypeError所述。

(int)计算结果为 int ,因此

result = (int)(float/float2)

result = int(float/float2)

不建议在裸变量名称两边放置不必要的括号。

最新更新