هل هناك أي فرق بين "السلسلة" و 'سلسلة' في الثعبان ؟ [مكررة]

StackOverflow https://stackoverflow.com/questions/143714

سؤال

هذا السؤال سبق الجواب هنا:

في PHP, سلسلة المغلقة في "التنصيص" سيتم تحليل للمتغيرات محل حين سلسلة المغلقة في واحدة ونقلت' لا.في بيثون ، هل هذا أيضا تطبيق ؟

هل كانت مفيدة؟

المحلول

لا:

2.4.1.سلسلة حرفية بايت

...في سهل الانجليزية:كلا النوعين من حرفية يمكن أن تكون مغلقة في مطابقة علامات الاقتباس المفردة (') أو علامات الاقتباس المزدوجة (").كما يمكن المغلقة في مجموعات مطابقة ثلاثة علامات الاقتباس المفردة أو المزدوجة (هذه هي التي يشار إليها عموما الثلاثي السلاسل بين علامات الاقتباس).مائل (\) حرف يستخدم للهروب من الشخصيات التي لها معنى خاص ، مثل السطر ، مائل نفسها ، أو حرف اقتباس...

نصائح أخرى

بيثون هي واحدة من عدد قليل من (?) اللغات حيث ' و " متطابقة وظائف.اختيار بالنسبة لي عادة ما يعتمد على ما هو في الداخل.إذا أنا ذاهب إلى اقتباس سلسلة لديه علامات الاقتباس المفردة في أنها سوف تستخدم علامات الاقتباس المزدوجة و بالعكس ، إلى خفض الحاجة إلى الهروب من الشخصيات في السلسلة.

أمثلة:

"this doesn't require escaping the single quote"
'she said "quoting is easy in python"'

هذا هو موثق في "سلسلة حرفية" صفحة من وثائق بايثون:

في بعض اللغات الأخرى ، الفوقية الشخصيات لا تفسر إذا كنت تستخدم علامات الاقتباس المفردة.خذ هذا المثال في روبي:

irb(main):001:0> puts "string1\nstring2"
string1
string2
=> nil
irb(main):002:0> puts 'string1\nstring2'
string1\nstring2
=> nil

في بيثون ، إذا كنت تريد السلسلة إلى أن تؤخذ حرفيا ، يمكنك استخدام الخام السلاسل (سلسلة يسبقه 'r' حرف):

>>> print 'string1\nstring2'
string1
string2
>>> print r'string1\nstring2'
string1\nstring2

مفردة ومزدوجة السلاسل بين علامات الاقتباس في بيثون متطابقة.الفرق الوحيد هو أن نقلت واحدة السلاسل يمكن أن تحتوي على unescaped اقتباس مزدوجة الشخصيات ، والعكس بالعكس.على سبيل المثال:

'a "quoted" word'
"another 'quoted' word"

ثم مرة أخرى, هناك الثلاثي-نقلا عن السلاسل التي تسمح لكل من اقتبس حرف و أسطر أن يكون unescaped.

يمكنك استبدال المتغيرات في سلسلة باستخدام اسمه محددات و السكان المحليين() مدمج:

name = 'John'
lastname = 'Smith'
print 'My name is %(name)s %(lastname)s' % locals()  # prints 'My name is John Smith'

التفاعلية مترجم بايثون يفضل علامات الاقتباس المفردة:

>>> "text"
'text'

>>> 'text'
'text'

هذا يمكن أن يكون مربكا للمبتدئين, لذا يجب أن العصا مع علامات الاقتباس المفردة (إلا إذا كان لديك مختلفة معايير الترميز).

الفرق بين " و ' سلسلة نقلا فقط في الاسلوب - إلا أن يزيل الحاجة إلى الهروب من البعض داخل سلسلة المحتوى.

نمط

PEP8 توصي متسقة القاعدة ، PEP257 يشير إلى أن docstrings استخدام الثلاثي علامات الاقتباس المزدوجة.

في بيثون ، نقلت واحدة من سلاسل مزدوجة-نقلت السلاسل هي نفسه.هذه بيب لا تجعل توصية من أجل هذا.اختيار القاعدة والتمسك بها.عندما سلسلة يحتوي على واحد أو اقتباس مزدوجة الشخصيات ، ومع ذلك ، فإن استخدام الآخر لتجنب الخطوط المائلة العكسية في السلسلة.فإنه يحسن القراءة.

بالنسبة الثلاثي-نقلا عن سلاسل دائما استخدام الاقتباس المزدوجة الأحرف بما يتفق مع docstring الاتفاقية في بيب 257 .

تستخدم على نطاق واسع ومع ذلك هو ممارسة تفضل انقر نقرا مزدوجا ونقلت عن اللغة الطبيعية سلاسل (بما في ذلك الاستيفاء) - وبالتالي أي شيء يحتمل أن يكون المرشح I18N.واحد يقتبس التقنية السلاسل:حرف, حرف, مسارات, خيارات سطر الأوامر التقنية REGEXes, ...

(على سبيل المثال ، عند إعداد مدونة I18N, تشغيل شبه التلقائي REGEX تحويل مزدوجة نقلت السلاسل بسرعة باستخدام على سبيل المثال gettext)

هناك 3 طرق يمكنك qoute السلاسل في بايثون:"السلسلة" 'سلسلة' """ سلسلة سلسلة """ كلها تنتج نفس النتيجة.

لا يوجد فرق في بيثون ، و يمكنك استخدامها لصالحك عند إنشاء XML.الصحيح XML جملة يتطلب مزدوجة-علامات الاقتباس حول قيم السمة ، وفي لغات كثيرة مثل جافا ، وهذا يفرض عليك الهروب منها عند إنشاء سلسلة من هذا القبيل:

String HtmlInJava = "<body bgcolor=\"Pink\">"

ولكن في بيثون ، يمكنك ببساطة استخدام الاقتباس و تأكد من استخدام مطابقة انتهى مثل هذا:

html_in_python = '<body bgcolor="Pink">'

جميل جدا أليس كذلك ؟ يمكنك أيضا استخدام ثلاثة التنصيص على بداية ونهاية الخط متعدد السلاسل ، مع موسوعة الحياة وشملت مثل هذا:

multiline_python_string = """
This is a multi-line Python string which contains line breaks in the 
resulting string variable, so this string has a '\n' after the word
'resulting' and the first word 'word'."""

نعم.أولئك الذين يدعون الاقتباس المفردة والمزدوجة متطابقة في بيثون هي ببساطة خاطئة.

وإلا في البرمجية التالية في انقر نقرا مزدوجا سلسلة مقتبسة لن اتخذت إضافية 4.5% أطول الثعبان إلى عملية:

import time

time_single = 0
time_double = 0

for i in range(10000000):
    # String Using Single Quotes
    time1 = time.time()
    str_single1 = 'Somewhere over the rainbow dreams come true'
    str_single2 = str_single1
    time2 = time.time()
    time_elapsed = time2 - time1
    time_single += time_elapsed

    # String Using Double Quotes 
    time3 = time.time()
    str_double1 = "Somewhere over the rainbow dreams come true"
    str_double2 = str_double1
    time4 = time.time()
    time_elapsed = time4 - time3
    time_double += time_elapsed

print 'Time using single quotes: ' + str(time_single)
print 'Time using double quotes: ' + str(time_double)

الإخراج:

>python_quotes_test.py
Time using single quotes: 13.9079978466
Time using double quotes: 14.5360121727

حتى إذا كنت تريد سريعة نظيفة محترمة البرمجية حيث يبدو أنك تعرف الأشياء الخاصة بك, استخدام علامات الاقتباس المفردة عن سلاسل كلما كان ذلك عمليا.أيضا سوف تنفق أقل من الطاقة من خلال تخطي مفتاح shift.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top