2010-03-31 14 views
11

मैं एक लंबे कार्य हो पर कॉल:सही तरह से, कई पंक्तियों

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

मैं इसे विभाजित करने के लिए दो पंक्तियों में पसंद है, लेकिन करने के लिए सही तरीका के बारे में सुनिश्चित नहीं हूँ चाहते हैं पायथन में यह करो?

धन्यवाद।

+1

डुप्ली: http://stackoverflow.com/questions/53162/how-can-i-do-a-line-break-line-continuation-in-python – bernie

+1

यह प्रश्न उस संदर्भ से अलग है जिसे आपने संदर्भित किया है एक लंबी स्ट्रिंग नहीं है। – ensnare

+2

@ सेंसर: एक ही नियम लागू होते हैं। उस प्रश्न के स्वीकृत उत्तर में पाइथन में लंबी लाइन को तोड़ने के सभी संभावित तरीकों की सूची है। – bernie

उत्तर

20

कोड को और अधिक पठनीय बनाने के लिए लाइनों की लंबाई सीमित करने वाले कोडिंग दिशानिर्देश, कुछ हद तक, कोड को और अधिक पठनीय बनाने के लिए हैं। जंजीर विधि कॉल के मामले में, अर्थ स्पष्ट नहीं है। आपको मध्यवर्ती मूल्यों के लिए कुछ अस्थायी चर नाम चुनना चाहिए ताकि कोड का पाठक श्रृंखला को आसानी से समझ सके।

एक उदाहरण हो सकता है:

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

यह समझने के लिए एक बगीचे पथ नीचे पाठक ओर जाता है। प्रदर्शन में बहुत कम खो गया है, और अतिरिक्त कोड उद्देश्य के लिए जोड़ा गया है।

+0

मुझे लगता है कि आप '.digest' फ़ंक्शन पर एक आमंत्रण खो रहे हैं, लेकिन इसके अलावा, बहुत अच्छा जवाब। – bcherry

+0

धन्यवाद। मैंने ठीक कर दिया। –

+0

यह वास्तव में सहायक था। धन्यवाद! – ensnare

3

चार्ल्स मेर्रम के उत्तर को पसंद करते हैं, लेकिन मैंने सोचा कि यह काम करने के रूप में ध्यान देने योग्य है लेकिन बदसूरत और निराश होना है। इसलिये '।' एक शाब्दिक 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]' 

लेकिन वह ऐसा नहीं करते हैं।

संबंधित मुद्दे