您的位置:首页 > 编程语言 > Python开发

python 反人类函数式编程模拟while和if控制流

2014-03-20 17:14 459 查看
比如下面这个简单明了的命令式程序,它不断捕捉用户输入的内容,然后对其求和.直到用户输入一个以'0'开头的字符串,停止捕捉.

while 1:
line = input()
if line[:1]!='0':
print(sum(map(int,line.split())))
else:
break


那么,能不能不用while和if这些控制流语句,用纯函数式编程一句搞定呢?能.

(lambda f:f(f))((lambda f:(lambda line:(line[:1]!='0' and print(sum(map(int,line.split())))) or line[:1]=='0')(input()) or f(f)))


原型如下:

#函数1:
lambda f : f(f)
#函数2:
lambda f : ... or f(f)

#把函数2作为参数,调用函数1,就实现了无限循环:
(lambda f:f(f))((lambda f: ... or f(f)))


这是用递归来模拟无限循环while 1."..."的位置放上你想无限执行的表达式即可.

lambda表达式的精妙之处在于,它的定义或者执行都是表达式.比如下面2个都是表达式:

lambda x:x
(lambda x:x)(2)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐