为什么我们在python中的函数后使用空括号?

问题描述

一个简单的数据框

arr1 = pd.Dataframe{"name" : ["x","y"," z]
                     "Score" : [20,30,40]}

要将其转换为 numpy,我们可以使用

arr2 = arr1.to_numpy()
type(arr2)

它给出了 numpy 类型。 但是当我们不使用括号时,它给出了“方法”

arr2 = arr1.to_numpy
type(arr2)

Method 

在转置中我们不使用括号

arr2.T

所以我的问题是使用括号创建的区别是什么,为什么在转置等一些函数之后我们不使用括号?

解决方法

因为 .Tpropertynot{{1 }}method 旨在让您可以选择使 propertieszero-argument methods 一样可访问。

,

使用括号调用方法,省略它们只是对方法本身的引用。

据我所知,您确实在转置后使用括号。 当你输入

x = np.ones((1,2,3))
np.transpose(x,(1,2)).shape
(2,1,3)

您正在使用括号。您正在使用它们来传递参数,但它们就在那里。

当您在方法后键入空括号时,您正在调用该方法,并且不向它传递任何内容。 一般来说,这是因为它是在它之前的对象上调用的实例方法,即

arr2 = arr1.to_numpy()
type(arr2)

to_numpy 是一种在使用 Pandas 时可用于数组的方法。 type() 是一个独立的方法,它接受一个参数(您传递给它的对象,在本例中为 arr2)并返回该对象的类型。

arr2.T 是简写。它与 arr2.Transpose() 相同。


编辑:@PIG208 在评论部分指出:

T 可能是一个带有 getter属性,它调用转置并返回值,而 {{1} } 本身是一个可调用的。

这是对我称之为“速记”的更好解释。

,

to_numpy()pandas.DataFrame 类的一个方法,它可以访问数据帧的所有内部属性,因此在某些用例中它不需要任何参数。尽管您仍然可以根据文档指定参数:enter link description here

现在 numpy.ndarray.T 是数组的一个属性,所以它不应该接受任何参数。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...