编程语言
首页 > 编程语言> > 一次分配多个变量,Python

一次分配多个变量,Python

作者:互联网

有一个更好的方法吗?

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')

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

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

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

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

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

标签:python,variables,variable-assignment
来源: https://codeday.me/bug/20191013/1910228.html