python调用函数加括号和不加括号的区别
1 def bracket(data): 2 3 return data 6 7 if __name__ == '__main__': 8 9 # 不带括号调用的结果:<function bracket at 0x0000000004DD0B38>,a是整个函数体,是一个函数对象,不须等该函数执行完成 10 11 a = bracket 12 13 print a 14 15 # 带括号调用的结果:6 ,b是函数执行后返回的值6,须等该函数执行完成的结果 16 17 b = bracket(6) 18 19 print b
1、不带括号时,调用的是这个函数本身 ,是整个函数体,是一个函数对象,不须等该函数执行完成。
2、带括号(参数或者无参),调用的是函数的执行结果,须等该函数执行完成的结果。
简单说就是:
如果使用括号,则只调用if和函数。hello()
调用函数;hello
只是一个绑定到函数的名称,可以用来将函数对象作为参数传递给另一个函数。
def caller(f): f() def hello(): print("hi") def goodbye(): print("bye") caller(hello) # Prints "hi" caller(goodbye) # Prints "bye"
id
返回不同的值,因为对id
的每次调用都接收一个完全独立的对象作为其参数。使用id(hello)
,id
获取函数对象本身。使用id(hello())
,id
将获得通过调用hello
返回的对象;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix