प्रलेखन के अनुसार, वे बहुत अधिक विनिमेय हैं। क्या एक स्टाइलिस्टिक कारण एक दूसरे पर उपयोग करना है?
प्रलेखन के अनुसार, वे बहुत अधिक विनिमेय हैं। क्या एक स्टाइलिस्टिक कारण एक दूसरे पर उपयोग करना है?
जवाबों:
मुझे स्ट्रिंग के चारों ओर दोहरे उद्धरण चिह्नों का उपयोग करना पसंद है जो कि प्रक्षेप के लिए उपयोग किए जाते हैं या जो कि प्राकृतिक भाषा के संदेश हैं, और छोटे प्रतीकों जैसे तार के लिए एकल उद्धरण हैं, लेकिन अगर नियम में उद्धरण शामिल हैं, या यदि मैं भूल जाता हूं तो नियमों को तोड़ दूंगा। मैं नियमित अभिव्यक्ति के लिए docstrings और कच्चे स्ट्रिंग शाब्दिक के लिए ट्रिपल दोहरे उद्धरण का उपयोग करता हूं, भले ही वे आवश्यक न हों।
उदाहरण के लिए:
LIGHT_MESSAGES = {
'English': "There are %(number_of_lights)s lights.",
'Pirate': "Arr! Thar be %(number_of_lights)s lights."
}
def lights_message(language, number_of_lights):
"""Return a language-appropriate string reporting the light count."""
return LIGHT_MESSAGES[language] % locals()
def is_pirate(message):
"""Return True if the given message sounds piratical."""
return re.search(r"(?i)(arr|avast|yohoho)!", message) is not None
Https://docs.python.org/2.0/ref/strings.html पर आधिकारिक डॉक्स का हवाला देते हुए :
सादे अंग्रेजी में: स्ट्रिंग के शाब्दिक एकल उद्धरण (') या दोहरे उद्धरण (") से मेल खाते हैं।
इसलिए कोई फर्क नहीं है। इसके बजाय, लोग आपको बताएंगे कि जो भी संदर्भ से मेल खाता हो, और जो सुसंगत हो, उसे चुनें । और मैं सहमत हूँ - यह जोड़ना कि इस तरह की चीज़ के लिए "सम्मेलनों" के साथ आने की कोशिश करना व्यर्थ है क्योंकि आप केवल किसी नए चेहरे को भ्रमित करेंगे।
मैं पसंद करता था '
, खासकर के लिए '''docstrings'''
, जैसा कि मुझे लगता है """this creates some fluff"""
। इसके अलावा, मेरे स्विस जर्मन कीबोर्ड पर कुंजी के '
बिना टाइप किया जा सकता है Shift।
मैंने तब से पीईपी 257 के"""docstrings"""
अनुरूप ट्रिपल उद्धरणों का उपयोग करने के लिए बदल दिया है ।
"
केवल PC QWERTY कीबोर्ड पर एक शिफ्ट कुंजी की आवश्यकता है। मेरे कीबोर्ड पर, "
वास्तव में टाइप करना आसान है।
मैं विल के साथ हूँ:
मैं इससे बचूंगा, भले ही इसका मतलब बहुत भागने से हो।
मुझे उद्धरण के कारण बाहर खड़े एकल उद्धृत पहचानकर्ताओं में से सबसे अधिक मूल्य मिलता है। बाकी प्रथाएं सिर्फ उन एकल उद्धृत पहचानकर्ताओं को कुछ स्थायी कमरे देने के लिए हैं।
यदि आपके पास एक स्ट्रिंग है, तो आपको दूसरे का उपयोग करना चाहिए। उदाहरण के लिए, "You're able to do this"
या 'He said "Hi!"'
। इसके अलावा, आपको बस उतना ही सुसंगत होना चाहिए जितना (एक मॉड्यूल के भीतर, एक पैकेज के भीतर, एक परियोजना के भीतर, एक संगठन के भीतर)।
यदि आपका कोड उन लोगों द्वारा पढ़ा जा रहा है जो C / C ++ (या यदि आप उन भाषाओं और पायथन के बीच स्विच करते हैं) के साथ काम करते हैं, तो ''
एकल-वर्ण स्ट्रिंग्स के ""
लिए और लंबे समय तक तार के उपयोग से संक्रमण को कम करने में मदद मिल सकती है। (इसी तरह अन्य भाषाओं के अनुसरण के लिए जहां वे विनिमेय नहीं हैं)।
अजगर कोड मैं जंगली में देखा है के पक्ष में जाता है "
से अधिक '
है, लेकिन केवल थोड़ा। एक अपवाद यह है कि मैंने जो देखा है, """these"""
उससे कहीं अधिक सामान्य है '''these'''
।
ट्रिपल उद्धृत टिप्पणियां इस सवाल का एक दिलचस्प उपविषय हैं। पीईपी 257 डॉक्टर स्ट्रिंग के लिए ट्रिपल उद्धरण निर्दिष्ट करता है । मैंने Google कोड खोज का उपयोग करके एक त्वरित जाँच की और पाया कि पायथन में ट्रिपल डबल उद्धरण लगभग 10x हैं जो कि ट्रिपल सिंगल कोट्स के रूप में लोकप्रिय हैं - कोड Google इंडेक्स में 1.3M बनाम 131K घटनाएँ। इसलिए मल्टी लाइन मामले में आपका कोड शायद लोगों के लिए अधिक परिचित होने वाला है अगर वह ट्रिपल डबल कोट्स का उपयोग करता है।
"If you're going to use apostrophes,
^
you'll definitely want to use double quotes".
^
उस सरल कारण के लिए, मैं हमेशा बाहर पर दोहरे उद्धरण चिह्नों का उपयोग करता हूं। हमेशा
फुलझड़ी की बात करें, तो अपने स्ट्रिंग लिटरल्स को 'अगर आप एपरेकॉपी का प्रतिनिधित्व करने के लिए भागने के पात्रों का उपयोग करने जा रहे हैं, तो क्या अच्छा है? क्या यह उपन्यास पढ़ने के लिए कोडर बंद करता है? मैं कल्पना नहीं कर सकता कि आपके लिए हाई स्कूल की अंग्रेजी कक्षा कितनी दर्दनाक थी!
अजगर कुछ इस तरह से उद्धरण का उपयोग करता है:
mystringliteral1="this is a string with 'quotes'"
mystringliteral2='this is a string with "quotes"'
mystringliteral3="""this is a string with "quotes" and more 'quotes'"""
mystringliteral4='''this is a string with 'quotes' and more "quotes"'''
mystringliteral5='this is a string with \"quotes\"'
mystringliteral6='this is a string with \042quotes\042'
mystringliteral6='this is a string with \047quotes\047'
print mystringliteral1
print mystringliteral2
print mystringliteral3
print mystringliteral4
print mystringliteral5
print mystringliteral6
जो निम्न आउटपुट देता है:
this is a string with 'quotes'
this is a string with "quotes"
this is a string with "quotes" and more 'quotes'
this is a string with 'quotes' and more "quotes"
this is a string with "quotes"
this is a string with 'quotes'
"""This is a string with "quotes""""
एक SyntaxError उठाता है। इस स्थिति को कैसे हल किया जा सकता है? (उसी के साथ '''This is a string with 'quotes''''
)
'''This is a string with "quotes"'''
,।
मैं सामान्य रूप से दोहरे उद्धरण चिह्नों का उपयोग करता हूं, लेकिन किसी विशेष कारण से नहीं - संभवतः जावा से बस आदत से बाहर।
मुझे लगता है कि आप इनलाइन शाब्दिक स्ट्रिंग में एपोस्ट्रोफिस की तुलना में अधिक होने की संभावना रखते हैं, क्योंकि आप दोहरे उद्धरण चिह्नों को चाहते हैं।
यह शायद किसी भी चीज़ से अधिक एक शैलीगत प्राथमिकता है। मैंने सिर्फ PEP 8 की जाँच की और सिंगल बनाम डबल कोट्स का कोई उल्लेख नहीं देखा।
मैं सिंगल कोट्स पसंद करता हूं क्योंकि इसकी बजाय केवल एक कीस्ट्रोके दो के बजाय। यही है, मुझे एकल उद्धरण बनाने के लिए शिफ्ट कुंजी को मैश नहीं करना है।
पर्ल में आप सिंगल कोट्स का उपयोग करना चाहते हैं, जब आपके पास एक स्ट्रिंग होती है जिसे चर या अन्य वर्णों जैसे \ n, \ t, \ r, आदि से बचने की आवश्यकता नहीं होती है।
PHP पर्ल के समान अंतर बनाती है: एकल उद्धरणों में सामग्री की व्याख्या नहीं की जाएगी (यहां तक कि \ n परिवर्तित नहीं की जाएगी), जैसा कि दोहरे उद्धरण चिह्नों के विपरीत होता है, जिसमें चर हो सकते हैं ताकि उनका मूल्य मुद्रित हो सके।
अजगर नहीं करता, मुझे डर है। तकनीकी रूप से देखा गया है, पायथन में एक चर से एक नाम / पाठ को अलग करने के लिए $ टोकन (या जैसा) नहीं है। दोनों विशेषताएं पायथन को अधिक पठनीय बनाती हैं, कम भ्रमित करती हैं, आखिरकार। पायथन में एकल और दोहरे उद्धरणों का परस्पर प्रयोग किया जा सकता है।
r
स्ट्रिंग शाब्दिक के सामने जोड़कर, उससे एक कच्ची स्ट्रिंग नहीं बनाएंगे । तो print 'a\nb'
आपको दो लाइन print r'a\nb'
प्रिंट करेगा , लेकिन आपको एक प्रिंट करेगा।
मैंने दोहरे उद्धरण चिह्नों का उपयोग करना चुना क्योंकि वे देखना आसान है।
मैं उस समय अपने फैंस के लिए जो भी प्रहार करता हूं, उसका उपयोग करता हूं; यह सुविधाजनक है कि दोनों के बीच एक बार में स्विच करने में सक्षम हो!
बेशक, जब उद्धरण चिराचर को उद्धृत करते हैं, तो दोनों के बीच स्विच करना इतना डरावना नहीं हो सकता है ...
आपकी टीम का स्वाद या आपकी परियोजना के कोडिंग दिशानिर्देश।
यदि आप एक बहुभाषी वातावरण में हैं, तो आप स्ट्रिंग के लिए उसी प्रकार के उद्धरणों के उपयोग को प्रोत्साहित करना चाह सकते हैं जो दूसरी भाषा का उपयोग करते हैं, उदाहरण के लिए। और, मुझे व्यक्तिगत रूप से सबसे अच्छा लुक पसंद है '
मेरा उद्देश्य दोनों पिक्सेल को कम करना और आश्चर्यचकित करना है। मैं आमतौर पर '
पिक्सल को कम करने के लिए पसंद करता हूं , लेकिन "
इसके बजाय अगर स्ट्रिंग में एपोस्ट्रोफ है, तो पिक्सल को कम करने के लिए फिर से। एक डॉकस्ट्रिंग के लिए, हालांकि, मैं """
अधिक पसंद करता हूं '''
क्योंकि बाद वाला गैर-मानक है, असामान्य है, और इसलिए आश्चर्यजनक है। अगर अब मेरे पास स्ट्रिंग्स का एक गुच्छा है, जहां मैंने "
उपरोक्त तर्क के अनुसार उपयोग किया है, लेकिन यह भी एक है कि एक के साथ दूर '
हो सकता है, मैं अभी भी इसमें उपयोग कर सकते हैं "
स्थिरता को बनाए रखने के लिए, केवल आश्चर्य को कम करने के लिए।
शायद यह निम्नलिखित तरीके से पिक्सेल न्यूनतमकरण दर्शन के बारे में सोचने में मदद करता है। क्या आप इसके बजाय अंग्रेजी पात्रों की तरह दिखते हैं A B C
या AA BB CC
? बाद की पसंद गैर-खाली पिक्सेल का 50% बर्बाद करती है।
मैं दोहरे उद्धरण चिह्नों का उपयोग करता हूं क्योंकि मैं बैश को छोड़कर अधिकांश भाषाओं (C ++, Java, VB…) में वर्षों से ऐसा कर रहा हूं, क्योंकि मैं सामान्य पाठ में दोहरे उद्धरण चिह्नों का उपयोग करता हूं और क्योंकि मैं एक (संशोधित) गैर-अंग्रेजी कीबोर्ड का उपयोग कर रहा हूं जहां दोनों पात्रों को शिफ्ट कुंजी की आवश्यकता है।
'
= "
/
= \
=\\
उदाहरण :
f = open('c:\word.txt', 'r')
f = open("c:\word.txt", "r")
f = open("c:/word.txt", "r")
f = open("c:\\\word.txt", "r")
परिणाम समान हैं
= >> नहीं, वे समान नहीं हैं। एक एकल बैकस्लैश पात्रों से बच जाएगा। आप सिर्फ इतना है कि उदाहरण क्योंकि में बाहर भाग्य का क्या \k
और \w
तरह वैध पलायन नहीं कर रहे हैं \t
या \n
या \\
या\"
यदि आप एकल बैकस्लैश का उपयोग करना चाहते हैं (और उन्हें इस तरह व्याख्या की है), तो आपको "कच्चे" स्ट्रिंग का उपयोग करने की आवश्यकता है। आप इसे r
स्ट्रिंग के सामने एक ' ' डालकर कर सकते हैं
im_raw = r'c:\temp.txt'
non_raw = 'c:\\temp.txt'
another_way = 'c:/temp.txt'
जहां तक विंडोज में पथों का संबंध है, आगे की स्लैश उसी तरह से व्याख्या की जाती हैं। स्पष्ट रूप से स्ट्रिंग खुद ही अलग है। मैं इस बात की गारंटी नहीं दूंगा कि वे बाहरी डिवाइस पर इस तरह से काम कर रहे हैं।
os.path.join()