You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Python中执行i=3,b=5并行变量初始化会报字面量赋值错误?

为什么Python里i=3,b=5会报错,而Java/C++可以?

哈哈,这个问题本质上是Python和Java/C++在赋值语法逻辑上的差异导致的,我来给你讲明白~

先看Java/C++的逻辑

在Java或者C++里,类似int i=3, b=5;的写法是完全合法的:

  • 这里的逗号是变量声明的分隔符,本质上等价于把两个变量的声明拆成两行:int i=3; int b=5;。编译器会把它识别为“同时定义两个变量,并分别赋值”,逗号只是用来简化写法的语法糖。

再看Python的解析逻辑

而在Python里,你写i=3,b=5的时候,解析器的理解和你想的完全不一样:

  • Python里的逗号默认是用来创建元组的,而且赋值操作的优先级比逗号低,所以这句会被解析成 i = (3, b=5)。
  • 这里的b=5会被当成关键字参数表达式,但元组里根本不支持这种写法,不过更关键的是——如果你是想并行初始化两个变量,Python的正确姿势是并行赋值:i, b = 3, 5。

那你收到的「can't assign to literals」错误是怎么回事?大概率是你不小心写反了赋值顺序,比如写成了3=i,5=b:

  • Python里规定,赋值语句的左边必须是可赋值的对象(也就是“左值”),而字面量(比如3、5这种固定值)是不可被赋值的,所以试图给3或5赋值的操作直接触发了这个错误。

补充:Python的并行赋值原理

Python的i, b = 3, 5是真正的并行赋值:

  • 右边先创建一个元组(3, 5),然后Python会把元组里的元素依次解包,分别赋值给左边的i和b,这才是Python中同时初始化多个变量的正确方式。

内容的提问来源于stack exchange,提问作者amruth polavarapu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:38:09