2010-03-31 48 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]' 

但不这样做。