迭代解包在第一次迭代后导致空对象

时间:2018-01-12 11:41:40

标签: python python-3.x list generator

使用* iterable解包操作符功能我想保留变量的内容,以便我可以在我的代码中的多个位置使用该变量。 这是一个表达我想要的例子:

>>> 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在第一个print语句中已解包。

有没有办法通过仍使用*功能来维护变量的内容?显然,我可以将(x for x in (a, b, c) if x is not None)委托给我将一直调用的专用函数。我想知道是否有更简单/更pythonic的方式来处理操作。

1 个答案:

答案 0 :(得分:5)

您需要使用Id (带方括号)而不是App\Entity\Platform\Image

use Vich\UploaderBundle\Form\Type\VichImageType; class Form extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { // ... $builder->add('imageFile', VichImageType::class, [ 'required' => false, 'allow_delete' => true, 'download_label' => '...', 'download_uri' => true, 'image_uri' => true, 'imagine_pattern' => '...', ]); } } 创建一个迭代后变为空的生成器。而[x for x in (a, b, c) if x is not None] list comprehension 的语法,它返回列表。

例如:

(x for x in (a, b, c) if x is not None)