V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
spy0578
V2EX  ›  Python

Python 有什么链式调用的实现思路么

  •  
  •   spy0578 · 2019-01-19 19:07:13 +08:00 · 3445 次点击
    这是一个创建于 2134 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如 A->B->C 每个函数执行结果要传递给下一个 如果中间有执行失败的 就终止掉

    7 条回复    2019-01-20 18:27:12 +08:00
    tconey
        1
    tconey  
       2019-01-19 21:58:08 +08:00 via Android
    你的意思是 C(B(A(X))),类似 F#的|>这种的?
    xpresslink
        2
    xpresslink  
       2019-01-19 21:58:36 +08:00
    不太明白你的需求是什么?因为这个太简单了。

    import sys

    def A(arg):
    □□□□return value
    def B(arg):
    □□□□return value
    def C(arg):
    □□□□return value

    try:
    □□□□C(B(A()))
    except:
    □□□□sys.exit(1)
    qq7171891
        3
    qq7171891  
       2019-01-19 22:04:07 +08:00
    如果没什么特别要求的话:

    ( 1 )可以借助 RQ 这样的轻量级工具做守护进程,相当于搭个外部的桥。这样做的好处是 A、B、C 三个函数没有代码里的先后顺序要注意,以及轻量依赖;

    ( 2 )借助消息系统,三个函数也可以不注意顺序,但都需要监听消息?!

    ( 3 )不借助 RQ 和消息,倒着写成 C、B、A,执行是从 A 开始。

    失败中断什么的,本身不就是有语法上的支持干这个?

    楼主您看呢?
    aijam
        4
    aijam  
       2019-01-20 10:08:35 +08:00
    cyspy
        5
    cyspy  
       2019-01-20 17:45:53 +08:00
    return self?
    ddou
        6
    ddou  
       2019-01-20 18:10:42 +08:00
    可以借鉴下 Maybe Monad
    oaix
        7
    oaix  
       2019-01-20 18:27:12 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1188 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 18:14 · PVG 02:14 · LAX 10:14 · JFK 13:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.