使用 * iterable unpacking 操作符,我希望保留一个变量的内容,以便在代码中多次使用该变量。
这里是一个表达我想要的小例子:
第二次打印没有返回任何内容,因为在第一次打印语句期间已经对
是否有一种方法可以通过仍然使用 * 功能来保留变量的内容?显然,我可以将
>>> a = 1
>>> b = None
>>> c = None
>>> args = (x for x in (a, b, c) if x is not None)
>>> print(*args)
>>> 1
>>> print(*args)
>>>
第二次打印没有返回任何内容,因为在第一次打印语句期间已经对
args
进行了解包。是否有一种方法可以通过仍然使用 * 功能来保留变量的内容?显然,我可以将
(x for x in (a, b, c) if x is not None)
委托给一个专门的函数,我会一直调用它。我想知道是否有更简单/更符合Python风格的方法来处理这个操作。
print
没有输出任何内容,因为生成器已经被耗尽(确实是通过解包来完成的,但这只是一个副作用 - 如果使用列表或元组就不会有这个问题)。 - bruno desthuilliers