使用* 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的方式来处理操作。
答案 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)