在Python中,有一些需要括号,而另一些则不需要,例如考虑以下示例:a = numpy.arange(10) print(a.size) print(a.var()) 为什么size函数不需要用括号括起来,而方差函数需要?这背后是否有通用的规则,还是每个函数都需要记忆?此外,有些函数在参数之前写(与上面的例子相反),例如:a = numpy.arange(10) print(np.round_(a)) 为什么不写.round_或.round_()?
听起来你对三个不同的概念感到困惑,这些概念不仅适用于Python,而且适用于(面向对象)编程。 属性是对象的值和特征。例如array.shape 方法是对象可以运行的函数和执行的操作。例如array.mean() 静态方法是属于一个对象类的函数,但不需要对象才能执行,例如np.round_() 看起来你应该了解面向对象编程:这里有一份关于Python方法的入门指南。 此外,一种更符合Python风格的特殊属性是property。它们是对象的方法,不使用()进行调用。听起来有点奇怪,但可能很有用;请深入了解它。
size
不是一个方法/函数,而是一个 属性,因此不需要括号,因为它没有被“调用”。(我意识到它可能是一个描述符,但这显然超出了范围)。更完整的答案可能会解释,size
和var
都是以类似的方式被查找,然后调用了var
。 - jedwardsnp.round_(..)
因为你调用的方法属于np
而不是 ndarraya
- 你不需要记住它们,可以查阅文档:https://docs.scipy.org/doc/numpy-1.13.0/reference/ - 方法需要 (),属性则不需要。 - Patrick Artner