Python 里面需要用多行匿名函数的时候怎么办

2015-03-01 14:36:30 +08:00
 aheadlead
lambda 感觉不够用啊…有时候用 filter 的时候觉得很不爽。
在网上查了,似乎 Python 没有这个功能…

C++11 里面的 lambda 表达式感觉都好用些。

谢谢
16235 次点击
所在节点    Python
23 条回复
9hills
2015-03-01 14:47:01 +08:00
lambda完全可以用普通函数替代。。
Valyrian
2015-03-01 14:47:17 +08:00
def
ffffwh
2015-03-01 15:03:19 +08:00
- 反斜杠换行
- if语句 用 if表达式(<true return> if <bool exp> else <false return>)代替
- 循环不明
zhicheng
2015-03-01 15:36:46 +08:00
歇了吧,Python 这种强制缩进的语言,复杂的匿名函数未必方便多少。而且 Python 本身也支持函数的嵌套定义。所以无所谓了。
icedx
2015-03-01 15:50:32 +08:00
def~
love
2015-03-01 16:01:20 +08:00
这是我对python唯一的怨念了。
def的话要想个名字啊,很烦。
如果是资源管理方面的话可以用with来代替。
binux
2015-03-01 16:06:48 +08:00
是的,lambda 就是半残的,别死守着这货
ruoyu0088
2015-03-01 16:17:50 +08:00
大量使用匿名函数会造成程序难以阅读。如果你需要一个多行的函数,那说明这个函数做了不少事情,应该给它起一个名字,这样阅读起来会方便很多,还可以为它写test case,调试的时候也方便。
ngn999
2015-03-01 16:42:58 +08:00
wodemyworld
2015-03-01 16:50:00 +08:00
@love 你lambda不要名字啊?如果不用名字,那def用tmp1、tmp2就得了
aheadlead
2015-03-01 17:25:26 +08:00
@9hills
@Valyrian
@icedx
@zhicheng
@love
@ruoyu0088 其实我最烦起名字了…
love
2015-03-01 17:31:24 +08:00
@wodemyworld 用tmp1看起来也太难受了吧。

因为python的缩进语法,要做到象js那样的匿名应该是不可能的,不过象ruby的block那样是可以的。
icedx
2015-03-01 17:36:14 +08:00
def a()
def b()
def c()
ruoyu0088
2015-03-01 17:43:08 +08:00
如果真的不想起名字,那么就给一个固定的名字就好了,例如:

def _lambda(x):
...
joyee
2015-03-01 19:53:49 +08:00
0.0 如果用python都需要写成多行,那不就是别匿名了还是起个名字增强可读性的信号吗?
aheadlead
2015-03-01 20:21:34 +08:00
@ruoyu0088 我觉得这是个好办法
est
2015-03-01 22:06:24 +08:00
可以inline写def 啊。。。
tclh123
2015-03-01 22:49:57 +08:00
续行符啊
xierch
2015-03-02 00:45:46 +08:00
def anonymous():
kk71
2015-03-02 09:28:22 +08:00
js里面匿名函数用多了么…

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/173728

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX