有我的问题:Python的函数式编程
假设我们有3个功能:F,G,H和下面的代码
y = f(x)
a = g(y)
b = h(y)
我想这样做,在一行上,如:
a,b = g(f(x)),h(f(x))
但如果f是非常缓慢的(并且不缓存它的结果)
我甲肝这是效率不高Ë一个解决方案与发电机:
a,b = ((g(y),h(y)) for y in (f(x),)).next()
但是这不是很可读
我愿做一些事情像:
with f(x) as y: a,b = g(y),h(y)
有没有人有一个想法?
(这是欺骗
y = f(x);a = g(y);b = h(y)
)
代码
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()
只是使它2行。 – kennytm 2012-01-04 09:26:51
'y = f(x); a,b =(g(y),h(y))'? – Marcin 2012-01-04 09:44:02
你的第一个答案是正确的,但这不是函数式编程。这个问题只是为了好玩并且深入学习python。 – user1129519 2012-01-04 10:04:04