带或不带括号的Python函数?

时间:2018-06-09 11:37:43

标签: python numpy syntax

在Python中,有些函数需要使用括号,而有些则不需要括号,例如:请考虑以下示例:

a = numpy.arange(10)
print(a.size)
print(a.var())

为什么size函数不需要用括号写,而不是方差函数?这背后是否有一个通用的方案,或者你只需​​要为每个功能记住它?

此外,还有在参数之前编写的函数(与上面的示例相反),如

a = numpy.arange(10)
print(np.round_(a))

为什么不写a.round_a.round_()

2 个答案:

答案 0 :(得分:3)

听起来你对3个不同的概念感到困惑,这些概念不是python特有的,而是(面向对象的)编程。

  • 属性是值,对象的特征。与array.shape
  • 一样
  • 方法是对象可以运行的函数,它可以执行的操作。 array.mean()
  • 静态方法是一类对象固有的函数,但不需要像[{1}}
  • 那样执行对象

听起来你应该看看OOP:here is a python primer on methods

此外,更加pythonic和特定类型的属性是property s。它们是(对象的)方法,不使用np.round_()调用。听起来有点奇怪,但可能有用;调查一下。

答案 1 :(得分:2)

arrange返回ndarraysize不是一个函数,它只是ndarray类的一个属性。因为它只是一个值,而不是一个可调用的,所以它没有括号。