Scenario: you have a long tuple as a result of a SQL query and want to unpack it into individual values. What's the best way to do that while conforming to PEP8? So far I have these three options:
single assignment, use backslash to split to multiple lines
person_id, first_name, last_name, email, \ birth_date, graduation_year, home_street, \ home_city, home_zip, mail_street, mail_city, \ mail_zip = row
single assignment, group left-hand side in parantheses and break lines without a backslash
(person_id, first_name, last_name, email, birth_date, graduation_year, home_street, home_city, home_zip, mail_street, mail_city, mail_zip) = row
split into multiple assignments, each fitting into a single line
person_id, first_name, last_name, email = row[0:4] birth_date, graduation_year, home_street = row[4:7] home_city, home_zip, mail_street, mail_city = row[7:11] mail_zip = row[11]
Which of the three options is the best? Is there anything better?
Anwering your question "Which of the three options is the best?"
pep8 states:
This Means the second one is preferred over the first one. The third one is fine conforming pep8 as well, though personally wouldn't recommend it.
To answer "is there anything better", I would suggest that a
namedtuple
allows you to access the individual data items with minimal fuss:This means you access attributes, rather than separate names, but is lighter-weight than building a class, keeps all of the data from your query together and exposes the values through sensible names.