我掌握了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'对象不可迭代",
我错过了什么?
答案 0 :(得分:4)
official Python tutorial下的Data Structures > Tuples and Sequences:
语句
t = 12345, 54321, 'hello!'
是元组包装的示例:值12345
,54321
和'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]。