পাইথনে একক উদ্ধৃতি বনাম ডাবল কোট [বন্ধ]


718

ডকুমেন্টেশন অনুসারে, এগুলি বেশ কিছু বিনিময়যোগ্য। একে অপরকে ব্যবহার করার স্টাইলিস্টিক কারণ রয়েছে কি?

উত্তর:


525

আমি স্ট্রিংগুলির চারপাশে ডাবল কোট ব্যবহার করতে চাই যা অন্তরঙ্গকরণের জন্য ব্যবহৃত হয় বা এটি প্রাকৃতিক ভাষার বার্তা এবং ছোট চিহ্নের মতো স্ট্রিংগুলির জন্য একক উদ্ধৃতি, তবে স্ট্রিংয়ের কোট থাকে বা আমি ভুলে গেলে নিয়মগুলি ভঙ্গ করব। আমি ডকাস্ট্রিংসের জন্য ট্রিপল ডাবল কোটস এবং কাঁচা স্ট্রিং লিটারালগুলি নিয়মিত প্রকাশের জন্য ব্যবহার করি না এমনকি তাদের প্রয়োজন না হলেও।

উদাহরণ স্বরূপ:

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

4
আকর্ষণীয়, আমি তাদের ঠিক একইভাবে ব্যবহার করি। আমাকে সেদিকে ঠেলে দেওয়ার জন্য কোনও কিছু পড়ার কথা মনে নেই। আমি কাঁচা এইচটিএমএলের মতো মানুষের জন্য নয়, দীর্ঘ স্ট্রিংয়ের জন্য ট্রিপল সিঙ্গল কোটও ব্যবহার করি। হতে পারে এটি ইংরেজী উদ্ধৃতি বিধিগুলির সাথে কিছু করার।
মাইক এ

12
বেশিরভাগ অজগর কোডার এটিকে কোড করে। সুস্পষ্ট কোনও নিয়ম নেই, তবে আমরা প্রায়শই কোডটি সেভাবেই পড়ি, এটি অভ্যাসে পরিণত হয়।
ই-সন্তুষ্ট

আমি ভাবছি যদি প্রতীক-জাতীয় জিনিসগুলির জন্য একক উদ্ধৃতিগুলি আসলে লিস্প / স্কিমের উদ্ধৃতি প্রকাশের শর্টকাট থেকে আসে। যাই হোক না কেন, এটি স্বজ্ঞাত। এছাড়াও, আমার সাথীরা, আমরা যদি পিইপি 8 স্টাইলের নির্দেশিকা অনুসরণ করি, তবে ফাংশনগুলির সত্যই নামকরণ করা উচিত লাইট_মেসেজ () এবং ইস_প্রেট ()।
ইউকনডুড

8
আমি মনে করি পার্ল একক উদ্ধৃত স্ট্রিংগুলির (কোনও দ্বিখণ্ডিতকরণ নয়) এবং ডাবল উদ্ধৃত স্ট্রিংগুলির (অন্তরবিচ্ছিন্নতার সাথে) মধ্যে পার্থক্য তৈরি করেছিল এবং পাইথন কোডাররা অভ্যাসটি উত্তরাধিকার সূত্রে পেয়েছে বা কখনও যেতে দেয় না।
ড্যারেন টমাস

2
আমি একই কনভেনশনটি ব্যবহার করি, প্লাস আমি এসকিউএল হিসাবে ট্রিপল সিঙ্গল কোটের ভিতরে সমস্ত কিছু হাইলাইট করে এটিকে গালি দিই।
রাউন্ড টাওয়ার

96

Https://docs.python.org/2.0/ref/strings.html এ অফিসিয়াল ডক্সের উদ্ধৃতি দেওয়া :

সরল ইংরেজিতে: স্ট্রিং লিটারেলগুলি একক উদ্ধৃতি (') বা ডাবল কোট (") এর সাথে মিলিয়ে সংযুক্ত করা যেতে পারে।

সুতরাং কোন পার্থক্য নেই। পরিবর্তে, লোকেরা আপনাকে প্রসঙ্গের সাথে মেলে এমন কোনও শৈলী চয়ন করতে এবং ধারাবাহিক হতে বলবে । এবং আমি একমত হব - যোগ করে এই ধরণের জিনিসটির জন্য "কনভেনশনস" নিয়ে আসার চেষ্টা করা অর্থহীন কারণ আপনি কেবলমাত্র কোনও আগতকেই বিভ্রান্ত করবেন।


3
হ্যাঁ, আমার জন্য ধারাবাহিকতা কী, তাই আমি সর্বত্র একক ব্যবহার করি। কম কিপ্রেস, দ্ব্যর্থহীন এবং সামঞ্জস্যপূর্ণ।
mlissner

90

আমি যেমন পছন্দ করি তেমন 'বিশেষত পছন্দ '''docstrings'''করতাম """this creates some fluff"""। এছাড়াও, আমার সুইস জার্মান কীবোর্ডের কী 'ছাড়াই টাইপ করা যায় Shift

আমি যেহেতু জন্য ট্রিপল কোট ব্যবহার করে পরিবর্তিত হয়েছে """docstrings"""সাথে সামঞ্জস্য থেকে, PEP 257


2
আমি একক উদ্ধৃতি পছন্দ করি, যেহেতু আমি প্রতিদিন এসকিউএল কোড লিখি এবং টি-এসকিউএল স্ট্রিং লিটারেলের জন্য একক উদ্ধৃতি ব্যবহৃত হয়। তবে আমি ট্রিপল ডাবল উদ্ধৃতি ব্যবহার করি কারণ ডকাস্ট্রিংগুলি মাঝে মাঝে সেগুলিতে কিছুটা ফ্লফ ব্যবহার করতে পারে।
একসরসো

4
স্ট্রিংয়ের জন্য সর্বত্র সরল উক্তি ব্যবহার করে আমাকে তিনটি ডাবল উদ্ধৃতি - '#if 0' এবং '#endif' ধরণের সাহায্যে উত্স কোডের কিছু অংশ অক্ষম করতে দেয়।
অস্পষ্ট

12
"কেবলমাত্র একটি পিসি QWERTY কীবোর্ডে শিফট কী প্রয়োজন। আমার কীবোর্ডে "টাইপ করা আসলে সহজ।
ই-সন্তুষ্ট

6
আমার কিবোর্ডে "এবং 'দুজনেরই শিফট কী দরকার
ফিউয়ার-ল্যাক্রিক্স

10
এই উত্তরটি পাইথন সম্মেলনের পরিপন্থী; পিইপি 257 দেখুন যা বলেছে: ধারাবাহিকতার জন্য, সর্বদা ডকাস্ট্রিংসের আশে "" "ট্রিপল ডাবল কোট" "" ব্যবহার করুন। python.org/dev/peps/pep-0257
বাটন 840

44

আমি উইলের সাথে আছি:

  • পাঠ্যের জন্য ডাবল উদ্ধৃতি
  • সনাক্তকারীর মতো আচরণ করে এমন কোনও কিছুর জন্য একক উদ্ধৃতি
  • Regexps জন্য ডাবল উদ্ধৃত কাঁচা স্ট্রিং আক্ষরিক
  • ডকাস্ট্রিংয়ের জন্য দ্বিগুণ উদ্ধৃতি

আমি এর সাথে লেগে থাকব যদিও এর অর্থ অনেকটা পালানো।

উদ্ধৃতিগুলির কারণে আমি একক উদ্ধৃত শনাক্তকারীদের থেকে সর্বাধিক মান পাই। বাকি অনুশীলনগুলি কেবলমাত্র সেই একক উদ্ধৃত শনাক্তকারীদের কিছু স্থায়ী ঘর দেওয়ার জন্য রয়েছে।


26

আপনার থাকা স্ট্রিংটিতে যদি একটি থাকে তবে আপনার অন্যটি ব্যবহার করা উচিত। উদাহরণস্বরূপ, "You're able to do this"বা 'He said "Hi!"'। তা ছাড়া, আপনার যতটা সম্ভব সামঞ্জস্যপূর্ণ হওয়া উচিত (মডিউলের মধ্যে, একটি প্যাকেজের মধ্যে, একটি প্রকল্পের মধ্যে, কোনও প্রতিষ্ঠানের মধ্যে)।

যদি আপনার কোডটি সি / সি ++ (বা আপনি যদি সেই ভাষা এবং পাইথনের মধ্যে স্যুইচ করেন) দিয়ে কাজ করেন এমন লোকেরা পড়তে চলেছেন, তবে ''একক-অক্ষরযুক্ত স্ট্রিংগুলির ""জন্য এবং দীর্ঘতর স্ট্রিংগুলির জন্য রূপান্তরটি সহজ করতে সহায়তা করবে। (একইভাবে অন্যান্য ভাষাগুলি অনুসরণ করার জন্য যেখানে সেগুলি বিনিময়যোগ্য নয়)।

পাইথন কোড আমি বন্য দেখা করেছি পক্ষপাতী থাকে "বেশি ', কিন্তু শুধুমাত্র সামান্য। একটি ব্যতিক্রম হ'ল আমি যা দেখেছি তার থেকে """these"""অনেক বেশি সাধারণ '''these'''


21

ট্রিপল উদ্ধৃত মন্তব্য এই প্রশ্নের একটি আকর্ষণীয় সাবটোপিক। পিইপি 257 ডক স্ট্রিংয়ের জন্য ট্রিপল কোট নির্দিষ্ট করে । আমি গুগল কোড অনুসন্ধান ব্যবহার করে একটি দ্রুত চেক করেছি এবং দেখতে পেয়েছি যে পাইথনে ট্রিপল ডাবল উদ্ধৃতিগুলি ট্রিপল সিঙ্গল কোট হিসাবে প্রায় 10x জনপ্রিয় - গুগল সূচী কোডগুলিতে 1.3M বনাম 131K এর উপস্থিতি। সুতরাং মাল্টি লাইনের ক্ষেত্রে আপনার কোডটি সম্ভবত ট্রিপল ডাবল উদ্ধৃতি ব্যবহার করে লোকদের কাছে আরও পরিচিত হতে চলেছে।


13
"If you're going to use apostrophes, 
       ^

you'll definitely want to use double quotes".
   ^

সেই সাধারণ কারণে, আমি সবসময় বাইরের দিকে ডাবল কোট ব্যবহার করি। সর্বদা

ফ্লাফের কথা বললে, আপনার স্ট্রিং লিটারেলগুলি 'যদি এস্ট্রোফেসের প্রতিনিধিত্ব করতে পালানোর অক্ষর ব্যবহার করতে হয় তবে এর সাথে কী ভাল হবে? এটি উপন্যাস পড়তে কোডারদের অসন্তুষ্ট করে? উচ্চ বিদ্যালয়ের ইংরেজি ক্লাসটি আপনার জন্য কত বেদনাদায়ক ছিল তা আমি ভাবতে পারি না!


11
'আপনি যদি কিছু "উদ্ধৃতি" দিতে চলেছেন তবে আপনি অবশ্যই একক উদ্ধৃতি ব্যবহার করতে চাইবেন
পাওলো

আমি এটি লেখার পর থেকে আমার মতামত এ বিষয়ে ব্যাপক পরিবর্তন হয়েছে। এটি এখন এক ধরণের পরিস্থিতি যেখানে আমি যুক্তি দিয়ে বলব যে আমি ডাবল-কোট ব্যবহার করব। একক উদ্ধৃতি ব্যবহারের প্রসঙ্গে অন্যটি আপনার হতে পারে। দেখুন গৃহীত উত্তর আরো বিস্তারিত বিষয়ে আমার বর্তমান অবস্থান জন্য। আমি মনে করি এটি কীভাবে একটি বিস্তৃত দর্শকের কাছে উপস্থাপন করা উচিত তার একটি দুর্দান্ত উদাহরণ।
Droogans

7

পাইথন এই জাতীয় উদ্ধৃতি ব্যবহার করে:

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'

2
কিন্তু """This is a string with "quotes""""একটি সিনট্যাক্সেরর উত্থাপন করে। এই পরিস্থিতি কীভাবে সমাধান করা যায়? (সাথে একই '''This is a string with 'quotes'''')
ডলমা 33 ই

1
"কোটস" এবং "" "এর মধ্যে একটি লাইন ব্রেক --োকান
নিকোলাস

1
@ ডোলমা 33 নিকোলাসের পরামর্শ স্ট্রিংয়ের বিষয়বস্তু পরিবর্তন করবে। উত্তম সমাধান ইতিমধ্যে উত্তরে রয়েছে: যদি আপনার স্ট্রিংটি কিছু ধরণের উদ্ধৃতি দিয়ে শেষ হয় তবে অন্য ধরণের ট্রিপল উদ্ধৃতি ব্যবহার করুন । যেমন '''This is a string with "quotes"''',।
jpmc26

3

আমি সাধারণভাবে ডাবল কোট ব্যবহার করি তবে কোনও নির্দিষ্ট কারণে নয় - সম্ভবত জাভা থেকে অভ্যাসের বাইরে।

আমি অনুমান করি যে আপনি ডাবল উদ্ধৃতি চান না তার চেয়ে আপনি একটি ইনলাইন আক্ষরিক স্ট্রিংয়ের মধ্যে অ্যাডাস্ট্রোফগুলিও বেশি চান।


3

ব্যক্তিগতভাবে আমি এক বা অন্য সাথে আঁকড়ে থাকি। এটা কোন ব্যাপার না। এবং উভয়ই উদ্ধৃতিতে আপনার নিজস্ব অর্থ প্রদান করা যখন আপনি সহযোগিতা করেন তখন কেবল অন্য লোককে বিভ্রান্ত করা।


2

এটি সম্ভবত কোনও কিছুর চেয়ে স্টাইলিস্টিক পছন্দ। আমি কেবল পিইপি 8 টি পরীক্ষা করে দেখেছি এবং একক বনাম ডাবল উদ্ধৃতিগুলির কোনও উল্লেখ দেখতে পাইনি।

আমি একক উদ্ধৃতি পছন্দ করি কারণ এটি দুটিয়ের পরিবর্তে কেবল একটি কীস্ট্রোক। অর্থাত, একক উদ্ধৃতি দেওয়ার জন্য আমাকে শিফট কীটি ম্যাশ করতে হবে না।


1
পিইপি 8 "ডকুমেন্টেশন স্ট্রিংস" এর অধীনে প্রথম বাক্যে পিইপি 257 এর সাথে লিঙ্ক আউট করেছে। পিইপি 257 তে এটি উল্লেখ করেছে: ধারাবাহিকতার জন্য, সর্বদা ডকাস্ট্রিংসের আশে "" "ট্রিপল ডাবল কোট" "" ব্যবহার করুন। যদি আপনি আপনার ডকাস্ট্রিংগুলিতে কোনও ব্যাকস্ল্যাশ ব্যবহার করেন তবে "" "কাঁচা ট্রিপল ডাবল কোট" "" ব্যবহার করুন। ইউনিকোড ডকাস্ট্রিংয়ের জন্য ইউ "" ইউনিকোড ট্রিপল-উদ্ধৃত স্ট্রিং "" "ব্যবহার করুন। তবুও, আমি একক উদ্ধৃতিটির পরিষ্কার চেহারা এবং আপনার দেওয়া একটি কীস্ট্রোকের কারণটি পছন্দ করি।
ম্যাক্সপলক

2

পার্লে আপনি একক উদ্ধৃতি ব্যবহার করতে চান যখন আপনার কাছে একটি স্ট্রিং থাকে যা vari n, \ t,, r ইত্যাদির মতো ভেরিয়েবল বা পালানো অক্ষরগুলিকে ইন্টারপোলেট করার দরকার হয় না

পিএইচপি পার্লের মতো একই পার্থক্য তৈরি করে: একক উদ্ধৃতিতে বিষয়বস্তু ব্যাখ্যা করা হবে না (এমনকি \ n রূপান্তরিত হবে না), ডাবল কোটের বিপরীতে যা ভেরিয়েবলগুলি সহ তাদের মান মুদ্রণ করতে পারে।

পাইথন না, আমি ভয় করি। প্রযুক্তিগতভাবে দেখা যায়, পাইথনের ভেরিয়েবল থেকে কোনও নাম / পাঠ আলাদা করতে no টোকেন (বা পছন্দ মতো) নেই। উভয় বৈশিষ্ট্য পাইথনকে সর্বোপরি আরও পঠনযোগ্য, কম বিভ্রান্তিকর করে তোলে। একক এবং ডাবল উদ্ধৃতি পাইথন এ বিনিময়যোগ্য হিসাবে ব্যবহার করা যেতে পারে।


আপনি যা বলছেন তা শক্তিশালী করার জন্য PH n কেবল পিএইচপি এবং পার্লের ডাবল উদ্ধৃতিতে ব্যাখ্যা করা হবে, যখন পাইথনে ডাবল এবং একক উদ্ধৃতি উভয়ই কাজ করবে
স্টিভ্লো

1
@ স্টিভ্লো: যদি না আপনি এটি থেকে কোনও কাঁচা স্ট্রিং rতৈরি না করেন তবে স্ট্রিংয়ের সামনে আক্ষরিক যোগ করে। সুতরাং print 'a\nb'আপনি দুটি লাইন print r'a\nb'মুদ্রণ করবে , কিন্তু আপনি একটি মুদ্রণ করবে।
টাডেক


1

আমি তখন আমার অভিনব কাহিনীকে কেবল ব্যবহার করি; এক ঝকঝকে মধ্যে দুজনের মধ্যে স্যুইচ করতে সক্ষম হওয়াই সুবিধাজনক!

অবশ্যই, উদ্ধৃতি চ্যাসেটারদের উদ্ধৃতি দেওয়ার সময়, দুজনের মধ্যে স্যুইচিং সর্বোপরি তাত্পর্যপূর্ণ নাও হতে পারে ...


0

আপনার দলের স্বাদ বা আপনার প্রকল্পের কোডিং নির্দেশিকা।

আপনি যদি কোনও ভাষাগত পরিবেশে থাকেন, আপনি উদাহরণস্বরূপ, অন্য ভাষা ব্যবহার করে এমন স্ট্রিংগুলির জন্য একই ধরণের উদ্ধৃতিগুলির ব্যবহারকে উত্সাহিত করতে চাইতে পারেন। অন্যথায়, আমি ব্যক্তিগতভাবে 'এর চেহারাটি পছন্দ করি


0

আমি যতদূর জানি না। যদিও আপনি কিছু কোড দেখুন তবে "" পাঠ্যের স্ট্রিংয়ের জন্য সাধারণত ব্যবহৃত হয় (আমার ধারণা "এর চেয়ে বেশি" অভ্যন্তর পাঠ্য "এর চেয়ে বেশি প্রচলিত), এবং '' হ্যাশকি এবং এর মতো জিনিসগুলিতে প্রদর্শিত হয় appears


0

আমি লক্ষ্য করেছি পিক্সেল এবং আশ্চর্য দুটোই হ্রাস করা। আমি সাধারণত 'পিক্সেল হ্রাস করতে পছন্দ করি তবে এর "পরিবর্তে যদি স্ট্রিংটির একটি অ্যাডোস্ট্রোফ থাকে তবে পিক্সেলকে আবার ছোট করতে। কোনও ডক্টরসিংয়ের জন্য, তবে আমি """তার চেয়ে বেশি পছন্দ করি '''কারণ পরেরটিটি মানহীন, অস্বাভাবিক এবং তাই অবাক করা। এখন যদি আমার "উপরের যুক্তি অনুসারে আমি কয়েকটি স্ট্রিং ব্যবহার করেছি তবে এটির সাথেও দূরে সরে 'যেতে পারে তবে আমি "কেবলমাত্র আশ্চর্য হ্রাস করার জন্য এটি ধারাবাহিকতা রক্ষার জন্য এতে ব্যবহার করতে পারি ।

সম্ভবত এটি নিম্নলিখিত উপায়ে পিক্সেল মিনিমাইজেশন দর্শনের চিন্তা করতে সহায়তা করে। আপনি কি বরং ইংরেজী চরিত্রগুলির মতো দেখতে চান A B Cবা চান AA BB CC? পরবর্তী পছন্দটি খালি খালি পিক্সেলের 50% নষ্ট করে।


-1

আমি ডাবল কোট ব্যবহার করি কারণ আমি বেশ কয়েক বছর ধরে বাশ ব্যতীত বেশিরভাগ ভাষায় (সি ++, জাভা, ভিবি…) এই কাজ করে যাচ্ছি, কারণ আমি সাধারণ পাঠ্যেও ডাবল উদ্ধৃতি ব্যবহার করি এবং কারণ আমি একটি (সংশোধিত) অ-ইংরাজী কীবোর্ড ব্যবহার করছি যেখানে উভয় অক্ষরের জন্য শিফট কী প্রয়োজন।


-4

' = "

/= \=\\

উদাহরণ:

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 নির্ভরতা, ব্যবহারের স্পষ্ট করছিos.path.join()
অ্যাডাম স্মিথ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.