飘逸的python - 几行代码实现unix管道风格的函数调用

用过linux的基本知道它的管道,是将一个程序或命令的输出作为还有一个程序或命令的输入.

废话少说,以下我们看用python怎么实现unix管道风格的函数调用.

#coding=utf-8
class Pipe:
    def __init__(self, func):
        self.func = func

    def __ror__(self, other):
        return self.func(other)

@Pipe
def add(args):
    return sum(args)

@Pipe
def incr(arg):
    return arg + 1

print [1, 2, 3] | add | incr

原理就是装饰器+操作符重载.(对装饰器一知半解的请看<python装饰器的本质>)

当中魔术方法__ror__重载操作符|

真是简单粗暴.人生苦短,我用python!

时间: 2024-10-19 16:19:00

飘逸的python - 几行代码实现unix管道风格的函数调用的相关文章

几行代码实现unix管道风格的函数调用

用过linux的基本知道它的管道,是将一个程序或命令的输出作为另一个程序或命令的输入. 废话少说,下面我们看用python怎么实现unix管道风格的函数调用. #coding=utf-8 class Pipe: def __init__(self, func): self.func = func def __ror__(self, other): return self.func(other) @Pipe def add(args): return sum(args) @Pipe def inc

Python 50行代码实现代理服务器(加强版)

网上很多python 50行代码实现代理服务器,但是易出现异常,导致退出. 这里的代理服务器,是指二级代理服务器.比如:A可以访问B,B可以访问C,A不能直接访问C.这时,如果在B开一个二级代理,就可实现A访问C.现有的工具有CCProxy. 这里就是使用Python简单的实现一个二级代理. #coding=utf-8 import socket import select import sys import threading import time import logging import

python多行代码简化

python中,可以把多行代码简化为一行,把for循环和if条件判断都集中到一行里来写,示例如下: >>> from nltk.corpus import stopwords >>> english_stopwords = stopwords.words('english')#加载nltk中的英文停用词数据#创建一个列表,内含3个单词列表 >>> texts_tokenized = [['writing', 'ii', 'rhetorical', 'c

微信自动回复,Python几行代码就搞定了,消息不在错过

之前写过一篇python-requests获取好友列表的文章,简直花费了好多的时间和精力,又抓包,又找参数,又分析的,简直麻烦透顶,今天突然知道了另外一种捷径,几行代码就可以完成.... 学习Python中有不明白推荐加入交流裙                                           号:735934841                                           群里有志同道合的小伙伴,互帮互助,                     

词云制作没那么难,Python 10 行代码就实现了!

写在前面 想必大家有一个问题.什么是词云呢? 词云又叫名字云,是对文本数据中出现频率较高的"关键词"在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思.. 网页上有许多词云的效果图: 而且,目前有许多制作词云的工具: 但是作为一个学习Python的程序员来说,我更喜欢通过自己的编程去解决问题. 而且用Python制作词云只需十行代码就行了哦~ 一起来看看吧! 代码块 import matplotlib.pyplot as plt fr

Python 5行代码 搞定加减法计算

五行代码实现加减法的计算 数据类型 首先简单普及一下代码中涉及到的两种数据类型 整型:可以理解为整数类型 字符串:带引号的都是字符串类型(这么说不严谨,为了方便理解) 上代码: num1 = input("请输入第一个数字") num2 = input("请输入第二个数字") new_num1 = int(num1) new_num2 = int(num2) print(new_num1 + new_num2) 1.前两条代码的意思就是每次输入一个数,input的功

Python 70行代码实现简单算式计算器

描述:用户输入一系列算式字符串,程序返回计算结果. 要求:不使用eval.exec函数. 实现思路:找到当前字符串优先级最高的表达式,在算术运算中,()优先级最高,则取出算式最底层的(),再进行加减乘除运算.对于加减乘除,也要确立一个优先级,可以使用一个运算符列表,用for循环逐个处理运算符,并且要考虑同级情况(如for遍历至*时,也要考虑同级别的\是否要提前运算).不断循环上述过程,直到最终得到一个结果. 关键点:使用re模块匹配出当前状态下优先级最高的算式. result = re.sear

10行代码教你免费观看无广告版的《庆余年》腾讯视频

1写在前面 本来这周是要发个关于如何用python打造属于自己的iphone快捷方式的,结果因为本周一直沉迷在<庆余年>中不能自拔,所以下周吧! 最近<庆余年>大火的同时,关于腾讯吃相的吐槽也是大火.没钱冲会员,比别人看的晚就算了,2分多钟的广告是真的不能忍,尤其是好不容易广告结束了,还发现这集已经看过了,我去! 那就面对疾风吧! 下面我教大家如何用Python 10行代码,直接在iphone上直接下载<庆余年>视频! 2效果展示 视频下载界面: 下载完成界面: 3如何

Use My Python,Send Your Mail(十来行代码)

人生苦短,我用python,最近实习一直在用工作,因为我做的工作涉及到海量数据,程序跑下来用上代理,一个月可能也跑不完,但是我快要回去考试两周,作为一个强迫症的coder,我必须要得知我的程序怎么了!!!所以我让我的程序成功执行一段时间,但是我又是非常"懒惰"的人(其实优秀的程序员都要很"懒惰"呢!坚决写简洁的代码,如果可以,越短越好,所以前短时间写了个160行的py 2048.),看了好多版本,看得我很郁闷呢-最后经过整理,得出这十行,送你! import smt