2010-03-31 54 views
11

我還有很長的功能,如下所示:放長功能的正確方法調用多行

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

我想它分成兩行,但我不知道正確的方式來在Python中執行此操作?

謝謝。

+1

dup:http://stackoverflow.com/questions/53162/how-can-i-do-a-line-break-line-continuation-in-python – bernie 2010-03-31 04:13:26

+1

這個問題與你引用的不同不是一個很長的字符串。 – ensnare 2010-03-31 04:15:00

+2

@ensnare:同樣的規則適用。這個問題被接受的答案列出了所有可能的方式來打破Python中的一條長長的路線。 – bernie 2010-03-31 04:17:51

回答

20

編碼準則限制線的長度是存在的,在部分地使代碼更具有可讀性。在你的鏈式方法調用的情況下,其含義不明確。你應該選擇在中間值一些臨時變量名,這樣代碼的讀者可以很容易地理解鏈條。

一個例子是:

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

這導致讀者下來花園路徑的理解。性能損失很小,並且附加代碼都是爲了目的而添加的。

+0

我想你錯過了比對'.digest'函數的調用,但其他的,很好的答案。 – bcherry 2010-03-31 04:25:44

+0

謝謝。我修好了它。 – 2010-03-31 04:39:23

+0

這真的很有幫助。謝謝! – ensnare 2010-03-31 04:43:13

3

身高查爾斯Merram的答案,但我認爲這值得一提的是工作,但醜陋和氣餒。因爲'。'是一個詞彙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]' 

但不這樣做。