我想在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 }
但这不起作用.为什么?有没有办法让它发挥作用?
备注:以下解决方案的工作,但我真的喜欢写函数里面的字典:
def myfunc(x, y): return x + y A = { 'a': 6, 'b': 3, 'operation': myfunc }
Martijn Piet.. 6
但这不起作用.为什么?
使用的函数定义def
是(复合)语句.语句是Python语言语法中的顶级组件.语句可以包含表达式,但表达式不能包含语句,只能包含其他表达式.
字典文字是一个表达式,因此它只能包含其他表达式,而不能包含def
语句.
有没有办法让它发挥作用?
您的选择是使用表达式.无论是lambda
或早先定义,(如你发现)函数的引用.
lamdba
s是表达式,它们只能包含更多表达式,这些表达式隐式生成返回值.你不能使用类似的东西return
或作业,因为那些是陈述,所以它们非常有限.如果a lambda
不能做你想做的事,你唯一剩下的选择是做你已经做的事情,存储对函数对象的引用.
但这不起作用.为什么?
使用的函数定义def
是(复合)语句.语句是Python语言语法中的顶级组件.语句可以包含表达式,但表达式不能包含语句,只能包含其他表达式.
字典文字是一个表达式,因此它只能包含其他表达式,而不能包含def
语句.
有没有办法让它发挥作用?
您的选择是使用表达式.无论是lambda
或早先定义,(如你发现)函数的引用.
lamdba
s是表达式,它们只能包含更多表达式,这些表达式隐式生成返回值.你不能使用类似的东西return
或作业,因为那些是陈述,所以它们非常有限.如果a lambda
不能做你想做的事,你唯一剩下的选择是做你已经做的事情,存储对函数对象的引用.