我有以下结构(可能需要返工,但对我来说这感觉很自然):
def get(baseVar):
if type(baseVar) == GeneratorType:
yield from baseVar
else:
yield baseVar
def multiply(baseVar):
if type(baseVar) == GeneratorType:
for item in baseVar:
yield item*2
else:
yield baseVar*2
funcs = {'get' : get, 'multiply' : multiply}
result = 10
for f in funcs:
result = funcs[f](result)
print(list(result))
另一种方法是(但这根本不是动态的)性能明智地工作就像我想要的那样,迭代器对象被传递给每个函数,从而从函数中获得更多的动力(理论上): p>
for result in multiply(get(10)):
...
如何在一行中嵌套多个yield函数并传递生成器对象而不对函数名称getattr
进行硬编码?
答案 0 :(得分:0)
我不确定,你想做什么。如果您有不同的功能,可以使用map:
def get(x):
return x
def multiply(x):
return x*2
print(list(map(multiply,map(get,[10]))
您希望如何获得您的名字?从外部来源,然后你的dict是正确的方式,从内部,然后你可以直接使用这些函数:
funcs = (get, multiply)
result = [10]
for f in funcs:
result = map(funcs,result)