¿Qué hace una coma en una asignación de python

Tengo conocimientos básicos de c ++ y me asignaron una tarea para leer un código en python y reescribirlo en c ++. No estoy familiarizado con python, así que lo siento por cualquier novato Q :).

En el código que veo:

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

en la primera línea, son ‘antes’ y ‘err’ 2 vars que están asignados al valor de la izquierda?

Cuando trato de ejecutar un ejemplo para mí:

 b,a= 5 print (a,b) 

Me sale el error

“TypeError: ‘int’ objeto no es iterable”,

¿Qué me estoy perdiendo?

Esto se trata en el tutorial oficial de Python , en Estructuras de datos> Tuplas y secuencias :

La statement t = 12345, 54321, 'hello!' es un ejemplo de empaquetado de tuplas : los valores 12345 , 54321 y 'hello!' se empaquetan juntos en una tupla. La operación inversa también es posible:

 >>> x, y, z = t 

Esto se denomina, apropiadamente, desempaquetado de secuencias y funciona para cualquier secuencia en el lado derecho. El desempaquetado de secuencias requiere que haya tantas variables en el lado izquierdo del signo igual como elementos en la secuencia. Tenga en cuenta que la asignación múltiple es solo una combinación de empaquetamiento de tuplas y desempaquetado de secuencias.

Tenga en cuenta esta porción:

El desempaquetado de secuencias requiere que haya tantas variables en el lado izquierdo del signo igual como elementos en la secuencia.

La statement before,err = TG.quad(fnx, -N/2, -x) cumple este requisito, pero b,a = 5 no lo hace.

Debe tener dos valores para cada variable.

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

Estoy seguro de que su método está devolviendo dos valores.

Respuesta corta:

Es simplemente una forma más corta de asignar variables.

 a, b = 1, 2 

Es lo mismo que:

 a = 1 b = 2 

Más técnico: como dice TigerhawkT3 , no son exactamente lo mismo. Por ejemplo en:

 a = 0 b = 1 a, b = b, a 

a es 1 y b es 0, intercambiando los valores de a y b. Esto es diferente de

 a = b b = a 

Donde a y b son 1.

Por otro lado, si lo hacemos:

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

x es [0, 2]. Primero asigna i, luego x [i].