有一个更好的方法吗?

a, b, c, = "yyy", "yyy", "yyy"


明显的尝试失败

a, b, c, = "yyy"
a, b, c = "yyy"*3


从技术上讲,以下工作有效,但我不认为这很直观,因为此逻辑表明a,b和c相同,而我要尝试做的只是说它们初始化为相同的值

a=b=c="yyy"

最佳答案

无需在此处使用元组分配;右边的值是不可变的,因此您也可以共享引用:

a = b = c = 'yyy'


在我看来,这一点都不是不直观的,并且python编译器只需要用字节码存储一个常量,而使用元组分配则需要一个附加的元组常量:

>>> def foo():
...     a, b, c = 'yyy', 'yyy', 'yyy'
...
>>> foo.__code__.co_consts
(None, 'yyy', ('yyy', 'yyy', 'yyy'))
>>> def bar():
...     a = b = c = 'yyy'
...
>>> bar.__code__.co_consts
(None, 'yyy')


如果右侧表达式是可变的,并且您希望abc具有独立的对象,则不要使用此选项;然后使用生成器表达式:

a, b, c = ({} for _ in range(3))


或更好的是,不要那么懒惰,只需输入一下即可:

a, b, c = {}, {}, {}


这并不是您的左手作业是动态的。

关于python - 一次分配多个变量,Python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18661879/

10-12 21:27
查看更多