当前位置:  开发笔记 > 编程语言 > 正文

dict中的函数

如何解决《dict中的函数》经验,为你挑选了1个好方法。

我想在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或早先定义,(如你发现)函数的引用.

lamdbas是表达式,它们只能包含更多表达式,这些表达式隐式生成返回值.你不能使用类似的东西return或作业,因为那些是陈述,所以它们非常有限.如果a lambda不能做你想做的事,你唯一剩下的选择是做你已经做的事情,存储对函数对象的引用.



1> Martijn Piet..:

但这不起作用.为什么?

使用的函数定义def是(复合)语句.语句是Python语言语法中的顶级组件.语句可以包含表达式,但表达式不能包含语句,只能包含其他表达式.

字典文字是一个表达式,因此它只能包含其他表达式,而不能包含def语句.

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

您的选择是使用表达式.无论是lambda或早先定义,(如你发现)函数的引用.

lamdbas是表达式,它们只能包含更多表达式,这些表达式隐式生成返回值.你不能使用类似的东西return或作业,因为那些是陈述,所以它们非常有限.如果a lambda不能做你想做的事,你唯一剩下的选择是做你已经做的事情,存储对函数对象的引用.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有