dict中的函数

时间:2016-01-05 10:20:37

标签: python function dictionary

我想在dict中写一个函数:

A = {
 'a': 6, 
 'b': 3,
 'operation': def myfunc(x, y): 
                # do many things here, I can't use a lambda x,y: ...
                return x + y
}

但这不起作用。 为什么?有没有办法让它发挥作用?

备注:以下解决方案有效,但我更愿意在 dict中编写函数

def myfunc(x, y): return x + y

A = {
 'a': 6, 
 'b': 3,
 'operation': myfunc
}

1 个答案:

答案 0 :(得分:6)

  

但这不起作用。的为什么吗

使用def的函数定义为(compound) statements。语句是Python语言语法中的top-level component。语句可以包含expressions,但表达式不能包含语句,只能包含其他表达式。

字典文字是an expression,因此它只能包含其他表达式,而不能包含def语句。

  

有没有办法让它发挥作用?

您的选择是使用表达式。 lambda或您之前定义的函数的引用(如您所发现的)。

lamdba是表达式,它们只能包含更多表达式,这些表达式隐式生成返回值。您不能使用return或作业等内容,因为这些是陈述,因此它们非常有限。如果lambda无法执行您想要的操作,那么您唯一的选择就是执行您已经执行的操作,并存储对函数对象的引用。