Python 将相同的值存储到多个变量
我想知道是否有一个更快的方法来设置这些下面Python 将相同的值存储到多个变量,python,Python,我想知道是否有一个更快的方法来设置这些下面 Max_age = 21 Suzy_age = 21 Mia_age = 21 为什么不写呢 Max_age and Suzy_age and Mia_age = 21 甚至 Max_age = Suzy_age = Mia_age = 21 我是python新手,这类代码看起来非常直观,但不知何故,没有像Those那样的一行代码?我错了吗?请告诉我我错了 您可以这样做: Max_age, Suzy_age, Mia_age = 21, 21
Max_age = 21
Suzy_age = 21
Mia_age = 21
为什么不写呢
Max_age and Suzy_age and Mia_age = 21
甚至
Max_age = Suzy_age = Mia_age = 21
我是python新手,这类代码看起来非常直观,但不知何故,没有像Those那样的一行代码?我错了吗?请告诉我我错了 您可以这样做:
Max_age, Suzy_age, Mia_age = 21, 21, 21
Max_age,Suzy_age,Mia_age=[21]*3
第一个无效
a和b以及c=1
将导致错误,因为a和b
是一个二进制表达式,它是一个值,而不是一个变量,因此您无法为其赋值
第二个是有效的
a=b=c=1
将按顺序运行
a = (b = (c = 1))
因为赋值是右关联的。赋值c=1
的计算结果为1
,因此将赋值给b
,依此类推
然而,在python中,编写多个赋值是很常见的,比如
a,b,c=1,2,3
这就是所谓的元组解包
这是否比每行一个赋值更好,取决于样式和上下文。我知道我们可以将所有对象都放在一个列表中,但是我要的是一行代码。你需要为代码行付费吗?你的最后一个例子是ok
Max\u age=Suzy\u age=Mia\u age=21
已经有效。你应该试着检查你想的例子是否已经有效了,在你的例子中,第二个已经有效了。“分配是正确的。赋值c=1返回1,因此将被赋值给b,依此类推。“嗯,不,python中的赋值不是这样工作的。它们不“返回”任何东西,而是从左到右执行。(a
首先被赋值,然后b
,然后c
)我认为澄清这一点很重要,a=(b=(c=1))
不是有效的python语句,因为您无法为全局变量定义赋值。a=b=c=1
是一个单独的python语法规则。@Aran Fey:a
被分配给表达式的结果b=…
。因此,必须首先计算正确的表达式。如何首先分配a
b=…
根本不是一个表达式。赋值是语句,它们从左到右执行。@blue\u注意,如语言参考中所述,每个目标列表都是从左到右赋值给结果对象的。结果对象是1
,a
,b
和c
中的每一个都是目标列表,m这意味着a=b=c=1
将a
直接设置为1
,然后b
直接设置为1
,并将c
直接设置为1,按顺序排列。使用ast
解析表达式,或使用dis
分解表达式都将证明b
未设置为子表达式的值例如,sessionc=1
。