एकल उद्धरण बनाम दोहरे उद्धरण [बंद]


79

मैंने अभी एक नौकरी शुरू की है जहाँ मैं जावा बैकग्राउंड से आने के बाद पायथन लिख रहा हूँ, और मैं यह नोटिस कर रहा हूँ कि अन्य डेवलपर्स ''डबल कोट्स ( "") के बजाय सिंगल कोट्स ( ) का उपयोग करते हुए स्ट्रिंग को कोट करते हैं । उदाहरण के लिए:

line1 = 'This is how strings typically look.'
line2 = "Not like this."

क्या व्यक्तिगत पसंद के अलावा इसके लिए कोई विशेष कारण है? क्या यह तार उद्धृत करने का उचित तरीका है? विशेष रूप से, जो मैं जानना चाहता हूं वह यह है कि क्या किसी प्रकार का मानक या स्वीकृत सर्वोत्तम अभ्यास है जो कोडिंग की इस शैली को चलाता है।


5
यदि आप कभी भी अंदर जाते हैं Ruby, तो वास्तव में सिंगल और डबल कोट्स के बीच एक तकनीकी अंतर होता है। डबल उद्धरण स्ट्रिंग इंटरपोलेशन का समर्थन करते हैं - शाब्दिक के रूप में एकल उद्धरण पार्स।
KChaloux 13

5
पर्ल और अधिकांश गोले के लिए भी यही सच है।
ब्लरफ्लू

18
यह प्रश्न "रचनात्मक नहीं है" कैसे? एक निरपेक्ष अजगर शुरुआत के रूप में, मुझे यह जानने की आवश्यकता है। यदि आप बैश स्क्रिप्ट लिखते हैं, तो एक बड़ा अंतर है।
मैगिसकोवॉन

19
रचनात्मक नहीं है? गीज़। "पायथन सिंगल डबल कोट्स" के लिए पहला Google परिणाम आपको बताता है कि आपको क्या जानने की आवश्यकता है। एरिक से पूछने और उत्तर देने के लिए धन्यवाद
aggieNick02

जवाबों:


65

अन्य उत्तर सही हैं कि इसमें कोई तकनीकी अंतर नहीं है, लेकिन मैंने एक-दो ओपन-सोर्स प्रोजेक्ट पर एक अनौपचारिक शैली का नियम देखा है: डबल कोट्स स्ट्रिंग्स के लिए उपयोग किए जाते हैं जो अंततः उपयोगकर्ता को दिखाई दे सकते हैं (उन्हें ज़रूरत है या नहीं) अनुवाद), और एकल उद्धरण स्ट्रिंग के लिए हैं जो स्वयं कोड की कार्यक्षमता से संबंधित हैं (उदाहरण के लिए। प्रमुख कुंजियाँ, नियमित अभिव्यक्तियाँ, एसक्यूएल)।

यह निश्चित रूप से एक सार्वभौमिक नियम नहीं है (या एक पीईपी में भी संहिताबद्ध है), इसलिए कोडिंग के किसी अन्य मनमाने पहलू की तरह यह स्थानीय नियमों के नीचे आता है।

ध्यान दें कि पीईपी 8 (जो मैंने इस उत्तर को लिखने पर ध्यान नहीं दिया था) कहता है :

यह पीईपी इसके लिए सिफारिश नहीं करता है। एक नियम चुनें और इसे छड़ी। जब एक स्ट्रिंग में एकल या दोहरे उद्धरण वर्ण होते हैं, हालांकि, स्ट्रिंग में बैकस्लैश से बचने के लिए दूसरे का उपयोग करें। यह पठनीयता में सुधार करता है।

जैसा कि एक टिप्पणीकार बताते हैं, यह जरूरी नहीं कि आप "नियम" की व्याख्या करने के आधार पर विरोधाभासी हों। मेरा सुझाव है कि हालांकि बोली के दूसरे भाग के साथ वास्तव में काम नहीं करता है।


1
यह घर की शैली हो सकती है, लेकिन यह पीईपी 8 के खिलाफ है: एक को चुनें और सामग्री की परवाह किए बिना पूरी फ़ाइल के लिए इसका उपयोग करें।
निल्स वॉन बर्थ

4
@NilsvonBarth PEP का कहना है कि "एक नियम चुनें और उससे चिपके रहें", "एक परिसीमन करने वाले चरित्र को न चुनें और उसके साथ रहें"। "उपयोगकर्ता-दृश्यमान पाठ के लिए दोहरे उद्धरण, मशीन द्वारा उपयोग की जाने वाली चीजों के लिए एकल उद्धरण" छड़ी करने के लिए पूरी तरह से ठीक नियम जैसा लगता है।
टान्नर स्विट

1
@Tanner Swett क्षमा करें, आप सही हैं; यह Google Python स्टाइल गाइड है जो "एक फ़ाइल के भीतर" निर्दिष्ट करता है। google.github.io/styleguide/pyguide.html#310-strings
Nils von Barth

ब्लैक वास्तव में पायथन स्ट्रिंग्स को दोहरे उद्धरणों से घिरा हुआ करता है। यहां तक ​​कि jslint भी चाहता है कि JavaSciprt के तार डबल कोट्स से घिरे हों। अधिकांश पुरानी भाषाओं ने कभी विकल्प भी नहीं दिए। सिर्फ इसलिए कि आप कर सकते हैं इसका मतलब यह नहीं है कि आपको चाहिए। बेशक, कुछ उदाहरण हैं जहां यह एक बहुत अच्छी बात है, जैसे कि जब आप स्ट्रिंग में एक उद्धरण रखते हैं। व्यावहारिक रूप से, हालांकि, आपके अधिकांश तार एक डेटा सेट से आने चाहिए जो आपके कोड आधार में हार्ड-कोडेड नहीं है।
बोबोर्ट

1
@bobort यदि आप किसी अनुवाद या UI सिस्टम में तार देख रहे हैं, तो भी आपको अक्सर अपने कोड में स्ट्रिंग कुंजी की आवश्यकता होती है। लेकिन मैं मानता हूं कि चीजें आगे बढ़ गई हैं, और इस अंतर का वास्तव में कोई लाभ नहीं है।
det

21

यह बहुत ही सरल है:

  • सिंगल कोट्स दोहरे उद्धरण चिह्नों के अन-एस्केप किए गए एम्बेडिंग की अनुमति देते हैं।
  • डबल कोट अन-एस्केप किए गए सिंगल कोट्स को एम्बेड करने की अनुमति देते हैं।

'जब तक आपको दोहरे उद्धरण चिह्नों की आवश्यकता न हो, तब तक (एकल उद्धरण) का उपयोग करना सबसे पाइथोनिक है ।

निम्नलिखित उद्धरण सीधे स्ट्रिंग शाब्दिक पर प्रलेखन से है।

यूनिकोड के तार में उपलब्ध हैं। पायथन 2 में 'बी' या 'बी' के एक उपसर्ग को अनदेखा किया गया है; यह इंगित करता है कि पायथन 3 में शाब्दिक एक बाइट्स शाब्दिक बनना चाहिए (उदाहरण के लिए जब कोड स्वचालित रूप से 2to3 के साथ परिवर्तित हो जाता है)। एक 'u' या 'b' उपसर्ग 'r' उपसर्ग के बाद हो सकता है।

ट्रिपल-उद्धृत स्ट्रिंग्स में, अनसैप्ड न्यूलाइन और उद्धरणों को अनुमति दी जाती है (और बनाए रखा जाता है), सिवाय इसके कि एक पंक्ति में तीन अनसैप्ड उद्धरण स्ट्रिंग को समाप्त करते हैं। (एक "उद्धरण" स्ट्रिंग को खोलने के लिए इस्तेमाल किया जाने वाला वर्ण है, अर्थात 'या'।)


15
पाठ्यक्रम का सवाल है - जब लगभग हर दूसरी भाषा में दोहरे उद्धरण चिह्नों का उपयोग किया जाता है, तो एकल उद्धरणों को पसंद करना क्यों है?
मार्टिन बेकेट

13
@MartinBeckett क्योंकि


6
@JarrodRoberson: मुझे लगता है कि "क्योंकि" (या 'क्योंकि', अगर आप करेंगे) एक मान्य उत्तर है अगर यह कुछ पीईपी (या समान) में लिखा है कि यह पाइथोनिक तरीका है । अन्यथा यह सिर्फ व्यक्तिगत पसंद है।
जोकिम सॉर

5
सिंगल कोट्स साफ दिखते हैं और टाइप करने के लिए शिफ्ट की भी जरूरत नहीं होती है
जोएलफैन

17

तकनीकी दृष्टिकोण से, इससे कोई फर्क नहीं पड़ता, शैली के दृष्टिकोण से कुछ विचार:

  • अधिकांश अन्य प्रोग्रामिंग भाषाएं दोहरे उद्धरण चिह्नों का उपयोग करती हैं।
  • अंग्रेजी में लिखते समय आमतौर पर दोहरे उद्धरण चिह्नों का उपयोग किया जाता है।
  • जब आप अपने आवेदन में बहुत अधिक गैर-तकनीकी / कथा पाठ रखते हैं तो एकल उद्धरण उपयोगी होते हैं क्योंकि वे आपको अधिक प्राकृतिक तरीके से दोहरे उद्धरण चिह्नों का उपयोग करने की अनुमति देते हैं। bar = '"It\'s awesome" he said.'
  • दूसरी तरफ अंग्रेजी भाषा में कुछ अवसरों में एकल उद्धरण चरित्र का भी उपयोग किया जाता है। bar = "\"It's awesome\" he said."

ध्यान दें कि "अक्सर तकनीकी स्ट्रिंग्स में भी उपयोग किया जाता है, -e, g f'you ने" {dumb_thing} सबमिट किया है, लेकिन वह हमारे लिए बहुत अधिक गूंगा है! '
क्रिश्चियन सॉयर

4

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

"डिफ़ॉल्ट रूप से" (जहां एक या दूसरे का उपयोग करने के लिए कोई सम्मोहक कारण नहीं है) के प्रकार के उद्धरण व्यक्तिगत पसंद की बात है।

अधिक जानकारी के लिए, पायथन प्रलेखन में स्ट्रिंग लिटरल्स पर अनुभाग देखें ।


4

नियमित रूप से एकल या दोहरे उद्धरण चिह्नों का उपयोग करने की आपकी आदत विकसित करते समय कुछ बातों पर विचार करें।

डबल कोट्स में दो फिंगर कीिंग की आवश्यकता होती है; और इसलिए टाइपिंग त्रुटियों के साथ-साथ गति कम होने की अधिक संभावना है

आपका संपादक एक चरित्र को बेहतर और फिर दूसरे को दिखा सकता है; आसान दृश्य सिंटैक्स डीबगिंग के लिए।

Docstrings ट्रिपल अक्षरों का उपयोग करते हैं: जो बेहतर दिखता है? "" "" "" या '' '' ''

हालाँकि मैंने इसे विंडोज़ ओएस पर नहीं देखा है, कुछ सिंटैक्स या डॉक्यूमेंटेशन टूल्स से डबल वर्जन सिंगल कोट्स की उम्मीद की जा सकती है।

अधिकांश पायथन ट्यूटोरियल के लिए मैंने देखा है कि मैं आपके अनुभव के विपरीत देखता हूं। मैं आमतौर पर दोहरे उद्धरण चिह्नों का उपयोग करता हूं।


4

मेरी राय में मैं एक स्ट्रिंग के लिए दोहरे उद्धरण चिह्नों का उपयोग करना पसंद करता हूं ।

क्यों? अन्य भाषाओं के प्रोग्रामर के लिए जल्दी से अनुकूलित किया जा सकता है और कोड को अधिक आसानी से समझ सकते हैं।

यदि एक सी प्रोग्रामर देखें:

'Writing "It\'s big?" No.'

इसके बजाय, संकोच होगा:

"Writing \"It's big?\" No."

3
"लेखन \" यह बड़ा है? "" नहीं। "
एपीआई-जानवर

@ लिसियो कि मैं क्या कर रहा था, मुझे नहीं पता था कि मैं स्थापित पायथन मानक के कुछ प्रकार का उल्लंघन कर रहा था या नहीं।
एरिक हाइड्रिक जूल

@ EricHydrick नहीं, आप एक या दूसरे के लिए चुन सकते हैं।
लुसियो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.