Правильный способ размещения длинных вызовов функций на нескольких линиях - PullRequest
11 голосов
/ 31 марта 2010

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

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

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

Спасибо.

Ответы [ 2 ]

20 голосов
/ 31 марта 2010

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

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

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

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

3 голосов
/ 31 марта 2010

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

>>> '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]'

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...