19

I am quite confused, consecutive equal = can be used in python like:

a = b = c

What is this language feature called? Is there something I can read about that?

Can it be generated into 4 equals?

a = b = c = d
fedorqui
  • 275,237
  • 103
  • 548
  • 598
Hello lad
  • 17,344
  • 46
  • 127
  • 200

2 Answers2

23

This is just a way to declare a and b as equal to c.

>>> c=2
>>> a=b=c
>>> a
2
>>> b
2
>>> c
2

So you can use as much as you want:

>>> i=7
>>> a=b=c=d=e=f=g=h=i

You can read more in Multiple Assignment from this Python tutorial.

Python allows you to assign a single value to several variables simultaneously. For example:

a = b = c = 1

Here, an integer object is created with the value 1, and all three variables are assigned to the same memory location. You can also assign multiple objects to multiple variables. For example:

a, b, c = 1, 2, "john"

Here, two integer objects with values 1 and 2 are assigned to variables a and b, and one string object with the value "john" is assigned to the variable c.


There is also another fancy thing! You can swap values like this: a,b=b,a:

>>> a=2
>>> b=5
>>> a,b=b,a
>>> a
5
>>> b
2
fedorqui
  • 275,237
  • 103
  • 548
  • 598
3

python support multi variable assignment at a time called multiassignment.

In [188]: a = b = c = d = 4

In [189]: a
Out[189]: 4

In [190]: b
Out[190]: 4

In [191]: c
Out[191]: 4

In [192]: d
Out[192]: 4

In [193]: a = 2

In [194]: b = 2

is same as for immutable object

In [195]: a, b = 2 #int is a immutable object like `tuple`, `str`

while this is not to be mean for mutable object like list, dictionary read about mutable and immutable

Vishnu Upadhyay
  • 5,043
  • 1
  • 13
  • 24