كيف يمكنني أن أفعل كسر خط (خط استمرار) في الثعبان ؟
-
09-06-2019 - |
سؤال
لدي سلسلة طويلة من التعليمات البرمجية التي أريد الانفصال بين خطوط متعددة.ماذا أفعل وما هو syntax ؟
على سبيل المثال ، إضافة مجموعة من السلاسل ،
e = 'a' + 'b' + 'c' + 'd'
ويكون ذلك في سطرين هكذا:
e = 'a' + 'b' +
'c' + 'd'
المحلول
ما هو الخط ؟ هل يمكن أن يكون مجرد حجج على السطر التالي دون أي مشاكل:
a = dostuff(blahblah1, blahblah2, blahblah3, blahblah4, blahblah5,
blahblah6, blahblah7)
وإلا يمكنك أن تفعل شيئا مثل هذا:
if a == True and \
b == False
التحقق دليل نمط للحصول على مزيد من المعلومات.
من المثال الخاص بك خط:
a = '1' + '2' + '3' + \
'4' + '5'
أو:
a = ('1' + '2' + '3' +
'4' + '5')
نلاحظ أن أسلوب دليل يقول أن استخدام الضمني مع استمرار قوسين المفضل, ولكن في هذه الحالة بالذات فقط إضافة الأقواس حول التعبير الخاص بك هو على الارجح طريقة خاطئة.
نصائح أخرى
الطريقة المفضلة من التفاف طوابير طويلة باستخدام بايثون ضمنا استمرار خط داخل الأقواس المعقوفة و الأقواس. طوابير طويلة لا يمكن كسرها عبر خطوط متعددة من خلال التفاف التعبير بين قوسين.هذه ينبغي أن تستخدم بدلا من استخدام خط مائل عكسي متابعة سطر.
الخطوط المائلة العكسية قد لا يكون مناسبا في بعض الأحيان.على سبيل المثال, طويل, متعددة مع البيانات لا يمكن استخدام ضمنا استمرار لذا الخطوط المائلة العكسية مقبولة:
with open('/path/to/some/file/you/want/to/read') as file_1, \ open('/path/to/some/file/being/written', 'w') as file_2: file_2.write(file_1.read())
هذه قضية أخرى هي مع تأكيد البيانات.
تأكد من أن المسافة البادئة استمرار خط مناسب.المكان المفضل لكسر حول ثنائي المشغل بعد المشغل ، وليس قبل ذلك.بعض الأمثلة:
class Rectangle(Blob): def __init__(self, width, height, color='black', emphasis=None, highlight=0): if (width == 0 and height == 0 and color == 'red' and emphasis == 'strong' or highlight > 100): raise ValueError("sorry, you lose") if width == 0 and height == 0 and (color == 'red' or emphasis is None): raise ValueError("I don't think so -- values are %s, %s" % (width, height)) Blob.__init__(self, width, height, color, emphasis, highlight)
تحرير:PEP8 الآن توصي عكس الاتفاقية (كسر في الثنائية العمليات) المستخدمة من قبل الرياضيين و ناشريها لتحسين إمكانية القراءة.
دونالد كانوث أسلوب كسر قبل عامل تشغيل ثنائي تؤيد مشغلي عموديا ، وبالتالي تقليل العين عبء العمل عند تحديد العناصر التي تضاف تطرح.
من PEP8:يجب أن خط فاصل قبل أو بعد الثنائية المشغل ؟ :
دونالد كانوث يشرح القاعدة التقليدية في أجهزة التنضيد سلسلة:"على الرغم من أن الصيغ ضمن فقرة دائما بعد كسر الثنائية العمليات و العلاقات عرض الصيغ دائما قبل كسر الثنائية العمليات"[3].
بعد تقليد من الرياضيات عادة النتائج في أكثر قابلية للقراءة كود:
# Yes: easy to match operators with operands income = (gross_wages + taxable_interest + (dividends - qualified_dividends) - ira_deduction - student_loan_interest)
في كود بايثون ، فإنه يجوز كسر قبل أو بعد الثنائية المشغل ، طالما أن الاتفاقية متسقة محليا.عن قانون جديد كانوث النمط المقترح.
[3]:دونالد كانوث هو TeXBook الصفحات 195 و 196
وضع \
في نهاية الخط الخاص بك أو أرفق البيان في parens ( .. )
.من IBM:
b = ((i1 < 20) and
(i2 < 30) and
(i3 < 40))
أو
b = (i1 < 20) and \
(i2 < 30) and \
(i3 < 40)
يمكنك كسر خطوط بين parenthesises و الأقواس.بالإضافة إلى ذلك, يمكنك إلحاق حرف الخط المائل العكسي \
إلى خط صراحة كسرها:
x = (tuples_first_value,
second_value)
y = 1 + \
2
من فم الحصان: صراحة الخط الانضمام
اثنين أو أكثر من المادية قد تكون خطوط انضم إلى المنطقية باستخدام خطوط أحرف الخط المائل العكسي (
\
) ، وذلك على النحو التالي:عندما المادية خط ينتهي في مائل ليس هذا هو جزء من سلسلة الحرفي أو تعليق ، وانضم مع التالية تشكيل واحد منطقي خط حذف مائل ، بعد نهاية خط حرف.بالنسبة على سبيل المثال:if 1900 < year < 2100 and 1 <= month <= 12 \ and 1 <= day <= 31 and 0 <= hour < 24 \ and 0 <= minute < 60 and 0 <= second < 60: # Looks like a valid date return 1
خط النهاية في خط مائل عكسي لا حمل التعليق.خط مائل عكسي لا مواصلة تعليق.خط مائل عكسي لا لا تزال رمزية باستثناء سلسلة حرفية (أي الرموز الأخرى من سلسلة حرفية لا يمكن تقسيم عبر المادية خطوط استخدام خط مائل عكسي).A مائل غير قانوني في أي مكان آخر على خط خارج سلسلة حرفية.
قد لا يكون pythonic الطريقة ولكن أنا عموما استخدام قائمة مع الانضمام إلى وظيفة كتابة سلسلة طويلة مثل استعلامات SQL.
query = " ".join([
'SELECT * FROM "TableName"',
'WHERE "SomeColumn1"=VALUE',
'ORDER BY "SomeColumn2"',
'LIMIT 5;'
])
مأخوذ من دليل المسافر إلى بيثون (خط استمرار):
عندما منطقي سطر من التعليمات البرمجية أطول من قبول الحد ، تحتاج إلى تقسيمه على عدة المادية خطوط.مترجم بايثون سينضم متتالية خطوط إذا كان آخر حرف الخط مائل.وهذا مفيد في بعض الحالات ، ولكن ينبغي تجنبها بسبب هشاشتها:البيضاء المساحة المضافة إلى نهاية الخط ، بعد مائل, كسر رمز قد يكون لديك نتائج غير متوقعة.
أفضل حل هو استخدام الأقواس حول العناصر الخاصة بك. غادر مع مغلقة بين قوسين في نهاية خط مترجم بايثون الانضمام إلى السطر التالي حتى أقواس مغلقة.نفس السلوك يحمل المجعد و الأقواس المربعة.
ومع ذلك, ، في أكثر الأحيان لا وجود لتقسيم خط المنطقي هو علامة على أن كنت تحاول أن تفعل الكثير من الأشياء في نفس الوقت ، والتي قد تعيق القراءة.
بعد أن قال ، وهنا مثال فيما يتعلق متعددة الواردات (عندما تتجاوز خط حدود المعرفة على بيب-8):
from app import (
app, abort, make_response, redirect, render_template, request, session
)