我希望能够vals
最后一行更清楚。
import rx
from rx import operators as op
light_stream = rx.range(1, 10).pipe(
op.with_latest_from(irradiance_stream),
op.map(lambda vals: print(vals[0], vals[1]))) # light, irradiance
有没有类似数组解构的东西
op.map(lambda [light, irradiance]: print(light_intensity, irradiance))) # fake
或者其他方式让代码清晰?谢谢
Python 过去允许在函数签名中解包可迭代参数,这似乎正是您想要的lambda
功能。该功能在 Python 3 中被删除,原因见PEP 3113 https://www.python.org/dev/peps/pep-3113/.
它被删除的主要原因是它有点扰乱内省,因为没有好的方法来命名已解压的复合参数。如果您采用普通参数(在普通函数中,而不是单行 lambda),则可以通过在单独的行上手动解包来实现相同的结果(不会弄乱原始参数名称):
# def foo(a, (b, c), d): # this used to be a legal function definition
def foo(a, bc, d): # but now you must leave the two-valued argument packed up
b, c = bc # and explicitly unpack it yourself instead
...
可能会做你想做的事情的其他事情是当你call一个函数。在您的示例中,您可以调用print(*vals)
,以及*
告诉 Python 解压可迭代对象vals
作为单独的参数print
. If vals
总是有两个值,它将与您当前的代码完全相同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)