python - 命令与需要 () 与不需要的区别是什么?
问题描述
我最近花了太长时间调试一段代码,才意识到问题是我没有在命令后包含 ()。哪些命令需要 () 而哪些不需要,其背后的逻辑是什么?
例如:
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 相关。
解决方案
因为函数的参数需要括号,而变量不需要,这就是为什么 it's list.append(<item>)
but it's的原因list.items
。
如果你调用一个没有括号的函数,比如list.append
返回的是函数的描述,不是函数做什么的描述,而是它是什么的描述。
至于类,对带有括号的类的调用会启动该类的对象,而对不带括号的类的调用指向类本身,这意味着如果您要执行print(SomeClass)
,您会得到<class '__main__.SomeClass'>
它是什么,如果你要调用一个没有括号的函数,你会得到同样的响应。
推荐阅读
- php - 试图在选择中获取邮件诗人列表
- python - Python中的有界逻辑回归
- jquery - 从视图中使用 Ajax-Post 导出 CSV - ASP.NET MVC5
- python - 如何在python中使用c++ .lib(c++静态库)文件
- javascript - 无法从选项卡面板内的表单中获取值
- typescript - 将 Typescript 声明移出到单独的文件?
- android - Crashlytics 发送有关崩溃的电子邮件。但是没有和邮件一样的崩溃
- reactjs - 为反应组件编写单元测试用例
- azure - 如何在防火墙中动态允许 Azure 数据中心 IP 地址
- dropdown - 无法以百分比而不是 px 值指定巨型菜单的大小