You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过字典键值调用函数?我的代码执行不符合预期

问题出在函数的「立即执行」和「函数对象」的区别上!

你现在遇到的问题很典型——你把函数调用(带括号的hello())存进了字典,而不是函数本身(不带括号的hello)。咱们一步步拆解:

1. 你的代码为什么会直接输出hello?

当你写a = {'+': hello()}时,Python会先执行右边的hello(),也就是立刻调用这个函数,所以程序直接打印了hello。而函数hello()没有写return语句,默认返回None,所以你的字典a实际上是{'+' : None}。

这就解释了为什么之后调用a['+']时没有任何结果——你其实是在调用None,当然不会有输出。

2. 正确的写法应该是怎样的?

要把函数对象(而不是函数执行后的结果)存进字典,只需要去掉括号,直接写函数名:

def hello(): print('hello')
a = {'+': hello}  # 这里存的是函数本身,不是执行结果

这时候字典a的'+'键对应的值是hello这个函数对象,当你想要执行它的时候,再加上括号调用:

a['+']()  # 这时候才会执行函数,输出hello

简单总结:

  • hello:代表函数本身,是一个可调用的对象
  • hello():代表立刻执行这个函数,得到的是函数的返回值

内容的提问来源于stack exchange,提问作者rajini raja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:24:58