Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"variable, variable =" syntax in python?

Tags:

python

I'm just getting started in python, and either haven't read about this, or missed it, and I don't know what to search for to find my answer.

Playing around with the IMAP module I came across this line of code.

result, data = mail.search(None, "ALL")

What is happening with the two variables here? Is this a syntax that is used when methods return a certain way, or does it always work? Could someone either explain what's going on here, or point me to some documentation?

like image 856
Joren Avatar asked Mar 18 '26 13:03

Joren


2 Answers

This is a form of sequence unpacking. If the RHS is an iterable of length 2 (since you have 2 objects on the LHS), you can use it. e.g.:

a,b = (1, 2)  #The RHS here is a tuple, but it could be a list, generator, etc.
print a #1
print b #2

Python3 extends this in an interesting way to allow the RHS to have more values than the LHS:

a,b,*rest = range(30) 
print(a) #0
print(b) #1
print(rest == list(range(2,30))) #True
like image 127
mgilson Avatar answered Mar 21 '26 02:03

mgilson


You can assign multiple variables in Python in one line: -

a, b, c = 1, 2, 3

Assigns three values 1, 2, 3 to a, b, c respectively.

Similarly you can assign values from a list to variables.

>>> li = [1, 2, 3]    
>>> a, b, c = li
>>> a
1
>>> b
2

This unpacks your list into 3 variables

like image 37
Rohit Jain Avatar answered Mar 21 '26 02:03

Rohit Jain