逗号在python赋值中起什么作用 我有C++的基本知识,我有一个任务,它可以读取一个代码python并用C++重写。我不熟悉python,所以我对任何新手表示抱歉

逗号在python赋值中起什么作用 我有C++的基本知识,我有一个任务,它可以读取一个代码python并用C++重写。我不熟悉python,所以我对任何新手表示抱歉,python,Python,在代码中,我看到: before,err = TG.quad(fnx, -N/2, -x) before_n = before/all inTime, err = TG.quad(fnx, -x,left) inTime_n= inTime/all 在第一行中,“before”和“err”是从左边分配给值的两个变量吗 当我尝试为自己运行一个示例时: b,a= 5 print (a,b) 我得到了错误 TypeError:“int”对象不可编辑 我遗漏了什么?简短回答: 这只是一种分配变量的

在代码中,我看到:

before,err = TG.quad(fnx, -N/2, -x)
before_n = before/all

inTime, err = TG.quad(fnx, -x,left)
inTime_n= inTime/all
在第一行中,“before”和“err”是从左边分配给值的两个变量吗

当我尝试为自己运行一个示例时:

b,a= 5
print (a,b)
我得到了错误

TypeError:“int”对象不可编辑

我遗漏了什么?

简短回答:

这只是一种分配变量的较短方法

a, b = 1, 2
同:

a = 1
b = 2
更技术性的: 如前所述,它们并不完全相同。 例如:

a = 0
b = 1

a, b = b, a
a为1,b为0,交换a和b的值。这与

a = b
b = a
其中a和b是1

另一方面,如果我们这样做:

x = [0, 1]
i = 0
i, x[i] = 1, 2

x是[0,2]。首先分配i,然后分配x[i]。

每个变量应该有两个值

b,a= 5,5
print (a,b)
我确信你的方法返回了两个值

这在以下章节中介绍:

语句t=1234554321,“你好!”是元组打包的一个示例:值12345、54321和“hello!”被打包成一个元组。也可以进行反向操作:

>>> x, y, z = t
这被称为顺序解包(sequenceunpacking),并适用于右侧的任何顺序。序列解包要求等号左侧的变量数量与序列中的元素数量相同。请注意,多重赋值实际上只是元组打包和序列解包的组合

注意这一部分:

序列解包要求等号左侧的变量数量与序列中的元素数量相同


前面的语句err=TG.quadfnx,-N/2,-x满足此要求,但b,a=5不满足此要求。

@TigerhawkT3找不到具有关键字unpacking的dupe。正确的术语是什么?@MYGz-通常是多重赋值。然而,我也找不到足够基本的副本,因为这不是什么特例——它基本上要求提供一个关于该语言的教程。他有一个例外,他不知道如何找出它的原因。堆栈溢出是理解导致程序错误的原因的地方。您已经在这里回答了自己的问题。:“。。。在第一行中,“before”和“err”是从左边分配给值的两个变量吗?本质上,是的,TG.quadfnx,-N/2,-x返回两个赋值给vars before和err。这在技术上是不同的。尝试a=0,b=1,然后a,b=b,a对a=b;我只是在读有关它的书。对不起,我想帮忙。这些基本问题都没有答案,对吗?在TigerhawkT3,他们在什么旗帜下被报道?