Правильный способ ввода длинных вызовов функций на несколько строк

У меня длинная функция, как показано ниже:

hash_correct = hashlib.md5(salt + password)).digest().encode("base64")

Я хотел бы разбить его на две строки, но я не уверен в правильном способе сделать это в Python?

Спасибо.

Ответ 1

Руководства по кодированию, ограничивающие длину строк, частично, чтобы сделать код более читаемым. В вашем случае прикомандированных вызовов метода значение не ясно. Вы должны выбрать некоторые временные имена переменных для промежуточных значений, чтобы читатель кода мог легко понять цепочку.

Одним из примеров может быть:

safe_md5 = hashlib.md5(salt + password)
crypto_hash = safe_md5.digest()
hash_correct = crypto_hash.encode('base64')

Это приводит читателя к садовому пути к пониманию. Очень мало потеряно в производительности, и дополнительный код добавлен для цели.

Ответ 2

Предпочитаю, что Чарльз Меррам отвечает, но я думал, что это стоит того, чтобы работать, но некрасиво и быть обескураженным. Потому как '.' является лексическим delimiter, следующее работало:

>>> 'abc def' . split()
['abc', 'def']
>>> 'abc def' . \
... split()
['abc', 'def']
>>> sys.version
'2.6.4 (r264:75706, Dec  7 2009, 18:45:15) \n[GCC 4.4.1]'

но не делайте этого.