2010-03-31 14 views
11

mam długą funkcji, jak widać poniżej:Prawidłowy sposób umieścić długi wywołania funkcji na wielu liniach

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

Chciałbym podzielić ją na dwie linie, ale nie jestem pewien poprawny sposób zrobić to w Pythonie?

Dzięki.

+1

dup: http://stackoverflow.com/questions/53162/how-can-i-do-a-line-break-line-continuation-in-python – bernie

+1

To pytanie różni się od tego, do którego się odwołałeś nie jest długim ciągiem. – ensnare

+2

@nazwa: obowiązują te same zasady. Przyjęta odpowiedź na to pytanie zawiera listę wszystkich możliwych sposobów rozbicia długiej linii w Pythonie. – bernie

Odpowiedz

20

Wskazówki dotyczące kodowania ograniczające długość linii są częściowo po to, aby kod był bardziej czytelny. W przypadku przykutych wywołań metodowych znaczenie nie jest jasne. Powinieneś wybrać tymczasowe nazwy zmiennych dla wartości pośrednich, aby czytelnik kodu mógł łatwo zrozumieć łańcuch.

Jednym z przykładów może być:

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

prowadzi czytelnika w dół ścieżki w ogrodzie do zrozumienia. Bardzo mało traci się na wydajności, a dodatkowy kod jest dodawany do celu.

+0

Myślę, że brakuje ci inwokacji w funkcji '.digest', ale poza tym bardzo dobrą odpowiedzią. – bcherry

+0

Dziękuję. Naprawiłem to. –

+0

To było naprawdę pomocne. Dziękuję Ci! – ensnare

3

Wolę odpowiedź Karola Merrama, ale uznałem, że warto to zauważyć, działając, ale brzydko i zniechęcając się. Bo '.' jest leksykalny delimiter, a następnie pracował:

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

ale nie rób tego.

Powiązane problemy