在一些示例代码中,我看到使用了以下语法:
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)
不建议在裸变量名称两边放置不必要的括号。