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():
return (1, 2, 3) # Parens just add readability
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)