博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 反人类函数式编程模拟while和if控制流
阅读量:6801 次
发布时间:2019-06-26

本文共 627 字,大约阅读时间需要 2 分钟。

比如下面这个简单明了的命令式程序,它不断捕捉用户输入的内容,然后对其求和.直到用户输入一个以'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)

 

转载于:https://www.cnblogs.com/xiangnan/p/3614180.html

你可能感兴趣的文章
我的友情链接
查看>>
linux
查看>>
H3C华为交换机破解console密码
查看>>
2015年11月8日-11月17日课程作业
查看>>
mysql 报错:error while loading shared libraries: libmysqlclient.so.15
查看>>
linux之SQL语句简明教程
查看>>
SpringBoot RESTful 应用中的异常处理小结
查看>>
域用户像服务器上传文件
查看>>
GRE over IPSCE
查看>>
我的友情链接
查看>>
Spinner的总结
查看>>
职场检讨术:算计别人就是伤害自己
查看>>
豹仔视觉个人文章
查看>>
经验分享:开发SWT应用两点心得
查看>>
使用angularjs写指令
查看>>
Linux下高并发socket最大连接数所受的各种限制 .
查看>>
php基础教程之mysqli
查看>>
jvax.net.ssl.SSLException: 异常解决
查看>>
IPC(进程间通信)几种常用的方法
查看>>
Python 模块 & 作用域
查看>>