2013-02-07 19 views
24

का उपयोग करके मैं अंत में 0xसे .format() स्ट्रिंग स्वरूपण ऑपरेटर से अपने 2.x कोड में स्विच कर रहा हूं ताकि भविष्य में 3.x पर माइग्रेट करना आसान हो सके। यह पता लगाने में थोड़ा आश्चर्य हुआ कि न केवल %- स्टाइल स्वरूपण Py3 में बना हुआ है, लेकिन इसका व्यापक रूप से मानक लाइब्रेरी कोड में उपयोग किया जाता है। यह तार्किक लगता है, क्योंकि '(%s)' % variable लिखना थोड़ा छोटा और '({})'.format(variable) से समझना आसान हो सकता है। लेकिन मुझे अभी भी संदेह है। कोड में दोनों दृष्टिकोणों का उपयोग करने के लिए यह उचित (पायथनिक?) है? धन्यवाद।पायथन 3:% s और .format()

+0

'% 'स्वरूपण थोड़ा तेज़ है। लेकिन यदि आप उस स्ट्रिंग स्वरूपण को कर रहे हैं जो महत्वपूर्ण है, तो आपके पास शायद अन्य महत्वपूर्ण चिंताएं होंगी। –

उत्तर

24

पायथन 3.2 दस्तावेज ने कहा कि, % अंत में चलेगा।

http://docs.python.org/3.2/tutorial/inputoutput.html#old-string-formatting

str.format() के बाद से, काफी नया है पायथन कोड का एक बहुत अभी भी % ऑपरेटर का उपयोग करता है। हालांकि, क्योंकि स्वरूपण की यह पुरानी शैली अंततः भाषा से हटा दी जाएगी, str.format() आमतौर पर का उपयोग किया जाना चाहिए।

लेकिन जैसे @regilero says, वाक्य 3.3 से चला गया है, जो यह वास्तव में ऐसा नहीं है सुझाव दे सकता है। कुछ बातचीत here हैं जो एक ही चीज़ का सुझाव देते हैं।

Python 3.4 the paragraph 7.1.1 के रूप में पढ़ता है:

% ऑपरेटर भी स्ट्रिंग प्रारूपण के लिए इस्तेमाल किया जा सकता। यह का अर्थ है, बाएं तर्क को एक sprintf() - शैली प्रारूप स्ट्रिंग की तरह सही तर्क पर लागू किया गया है, और इस स्वरूपण ऑपरेशन से उत्पन्न स्ट्रिंग देता है।

भी देखें Python 3.4 4.7.2 printf-style String Formatting.

+0

उत्तर देने के लिए बहुत बहुत धन्यवाद, व्लाद। दरअसल, वे कहते हैं कि प्रलेखन में, लेकिन 3.x की मानक लाइब्रेरी भी '%' के साथ बाढ़ आ गई है-जैसा प्रारूपण :(ऐसा लगता है कि '%' से छुटकारा पाने के कई संकेत नहीं हैं। वैसे भी, 'format() 'पर चिपके हुए सही लगता है :) –

+3

यह वाक्य पाइथन 3.3 दस्तावेज में हटा दिया गया है, यह अभी भी 3.2 में था http://docs.python.org/3.2/tutorial/inputoutput.html#old-string -फॉर्मेटिंग – regilero

+0

यह अच्छी खबर है! – Jon

-2

"% s" अब "{}", इसलिए जोड़ने% s के साथ बदलने के insted {} जहाँ आप स्ट्रिंग में चर जोड़ना चाहते हैं।

def main(): 
    n="Python 3.+" 
    l="looks nice" 
    f="does not look practical." 


    print("This seems to be the new way {}".format(n)\ 
     + "will be working, rather than the ' % ',{} but {}".format(l,f)) 



main() 

#In comparison to just injecting the variable 

आउटपुट उपेक्षा उद्धरण वे चित्रण कारणों

लिए कर रहे हैं "यह नया तरीका प्रतीत हो रहा है" पायथन 3. + " काम हो जाएगा, बल्कि '% ;, की तुलना में" अच्छा लग रहा है " लेकिन "व्यावहारिक नहीं दिखता है।" "

+5

में इस उत्तर में कुछ स्पष्टीकरण जोड़ें। – Andrei