逗号在python作业中做了什么

时间:2017-01-08 06:28:44

标签: python

我掌握了c ++的基础知识,我得到了一个用python读取代码并在c ++中重写它的赋值。我不熟悉python所以我很抱歉任何新手Q:)。

在我看到的代码中:

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

inTime, err = TG.quad(fnx, -x,left)
inTime_n= inTime/all

在第一行,是'之前'和#err' 2个分配给左边值的变量?

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

b,a= 5
print (a,b)

我收到错误

  

" TypeError:' int'对象不可迭代",

我错过了什么?

3 个答案:

答案 0 :(得分:4)

official Python tutorial下的Data Structures > Tuples and Sequences

  

语句t = 12345, 54321, 'hello!'元组包装的示例:值1234554321'hello!'在元组中打包在一起。反向操作也是可能的:

>>> x, y, z = t
     

这足够恰当地称为序列解包,适用于右侧的任何序列。序列解包需要在等号的左侧有尽可能多的变量,因为序列中有元素。请注意,多重赋值实际上只是元组打包和序列解包的组合。

请注意这一部分:

  

序列解包需要等号左侧有多少变量,因为序列中有元素。

声明before,err = TG.quad(fnx, -N/2, -x)符合此要求,但b,a = 5没有。

答案 1 :(得分:2)

每个变量都应该有两个值。

b,a= 5,5
print (a,b)

我确定您的方法返回两个值。

答案 2 :(得分:1)

简答:

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

a, b = 1, 2

与:

相同
a = 1
b = 2

更多技术性: 正如TigerhawkT3所说,它们并不完全相同。 例如:

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]。