# meaning of comma operator in python

## meaning of comma operator in python

`x0, sigma = 0, 0.1` is syntactic sugar. Some stuff is happening behind the scenes:

• `0, 0.1` implicitly creates a tuple of two elements.

• `x0, sigma =` unpacks that tuple into those two variables.

If you look at the docs for `numpy.histogram`, you see that it returns these two things:

``````hist : array
The values of the histogram. See density and weights for a description of the possible semantics.

bin_edges : array of dtype float
Return the bin edges (length(hist)+1).
``````

Your `y, xe = ...` unpacks the tuple of the two returned arrays respectively. That is why your `y` is assigned to a numpy int64 array and your `xe` assigned to a numpy float array.

A comma forms a tuple, which in Python looks just like an immutable list.

Python does destructuring assignment, found in a few other languages, e.g. modern JavaScript. In short, a single assignment can map several left-hand variables to the same number of right-hand values:

``````foo, bar = 1, 2
``````

This is equivalent to `foo = 1` and `bar = 2` done in one go. This can be used to swap values:

``````a, b = b, a
``````

You can use a tuple or a list on the right side, and it will be unpacked (destructured) the same way if the length matches:

``````a, b = [1, 2]
# same effect as above:
xs = [1, 2]
a, b = xs
# again, same effect using a tuple:
ys = 1, 2
a, b = ys
``````

You can return a tuple or a list from a function, and destructure the result right away:

``````def foo():

a, b, c = foo()  # a = 1; b = 2; c = 3
``````

I hope this answers your question. The histogram function returns a 2-tuple which is unpacked.

#### meaning of comma operator in python

This might be a solution for you:

``````def func():
return a, 3, (1,2,3)  # returns a tuple of 3 elements (str, int, tuple)

x1, x2, x3 = func()  # unpacks the tuple of 3 elements into 3 vars
# x1: a
# x2: 3
# x3: (1,2,3)
``````