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?
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
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With