首页 > 解决方案 > 命令与需要 () 与不需要的区别是什么?

问题描述

我最近花了太长时间调试一段代码,才意识到问题是我没有在命令后包含 ()。哪些命令需要 () 而哪些不需要,其背后的逻辑是什么?

例如:

import pandas as pd

col1=['a','b','c','d','e']
col2=[1,2,3,4,5]

df=pd.DataFrame(list(zip(col1,col2)),columns=['col1','col2'])

df.columns

Index(['col1', 'col2'], dtype='object')按预期返回。如果我们使用.columns()我们会得到一个错误。

其他命令则相反:

df.isna()

回报:

    col1    col2
0   False   False
1   False   False
2   False   False
3   False   False
4   False   False

df.isna返回:

<bound method DataFrame.isna of   col1  col2
0    a     1
1    b     2
2    c     3
3    d     4
4    e     5>

这虽然没有引发错误,但显然不是我们想要的。

哪些命令使用 () 而哪些不使用的逻辑是什么?

我在这里以 pandas 为例,但我认为这更普遍地与 python 相关。

标签: pythonpandasfunctionmethods

解决方案


因为函数的参数需要括号,而变量不需要,这就是为什么 it's list.append(<item>)but it's的原因list.items

如果你调用一个没有括号的函数,比如list.append返回的是函数的描述,不是函数什么的描述,而是什么的描述。

至于类,对带有括号的类的调用会启动该类的对象,而对不带括号的类的调用指向本身这意味着如果您要执行print(SomeClass),您会得到<class '__main__.SomeClass'>是什么,如果你要调用一个没有括号的函数,你会得到同样的响应。


推荐阅读