小编use*_*519的帖子

Python函数式编程

有我的问题:

假设我们有3个函数:f,g,h和以下代码

y = f(x)
a = g(y)
b = h(y)
Run Code Online (Sandbox Code Playgroud)

我想在一行上完成这项工作,例如:

a,b = g(f(x)),h(f(x))
Run Code Online (Sandbox Code Playgroud)

但如果f非常慢(并且没有缓存它的结果),这效率不高

我有一个带发电机的解决方案:

a,b = ((g(y),h(y)) for y in (f(x),)).next()
Run Code Online (Sandbox Code Playgroud)

但这不是很可读

我想做一些这样的事情:

with  f(x) as y: a,b = g(y),h(y)
Run Code Online (Sandbox Code Playgroud)

有没有人有想法?

(这是骗子

y = f(x);a = g(y);b = h(y)
Run Code Online (Sandbox Code Playgroud)

)

import time
def f(t): 
    time.sleep(1)
    print 'f called'
    return t

def g(t): return 1

def h(t): return 2

a,b = g(f(x)),h(f(x))
a,b = ((g(y),h(y)) for y in (f(x),)).next()
Run Code Online (Sandbox Code Playgroud)

python functional-programming function

-1
推荐指数
1
解决办法
496
查看次数

标签 统计

function ×1

functional-programming ×1

python ×1