بايثون (لغة برمجة)
النحو (بناء اللغة) والدلالات > تعبيرات

بعض تعبيرات بايثون تشبه لغات مثل سي وجافا، بينما البعض الآخر لا:
الجمع والطرح والضرب في بايثون مماثلة لما في جافا وسي، ولكن سلوك القسمة يختلف. هناك نوعان من القسمة في بايثون: التقسيم الكامل (أو تقسيم العدد الصحيح) // وتقسيم الفاصلة ا (لعائمة) /. أضافت بايثون أيضًا العامل ** من أجل الأس.
ابتداءً من بايثون 3.5، أستحدث عامل جديد @، لغرض استخدامه من قبل المكتبات مثل نمباي لضرب المصفوفات.
ابتداءً من بايثون 3.8، أُدرج العامل التالي:=، الذي يطلق عليه «عامل الفظّ»'walrus operator'. يقوم بتعيين القيم للمتغيرات كجزء من تعبير أكبر.
في بايثون == تقارن الأعداد من حيث القيمة (-0.0==0.0 هي true)، بالمقابل في جافا تقارن عدديا بالقيمة أو الكائنات بالعنوان المرجعي. (من الممكن في جافا مقارنة القيمة بالكائنات عن طريق طريقة ()equals). معامل بايثون is يستخدم ليقارن هوية الكائنات (أي المقارنة بالعنوان المرجعي). في بايثون، المقارنات يمكن تقييدها، على سبيل المثالa <= b <= c.
بايثون تستخدم الكلمات and, or, not للعمليات البوليانية بدل من الرموز &&, ||, ! المستخدمة في جافا ولغة سي.
بايثون لديها نوع من التعبيرات تحت مصطلح اشتمال قائمة. مدّت بايثون 2.4 قائمة الإدراك بتعبير أكثر شمولية أي تعبير المولّد.
الدوال المجهولة تنفذ باستخدام تعبير لامبدا؛ ولكنها محددة؛ وفي جسمها البرمجي يمكن أن يتواجد تعبير واحد.
التعبيرات الشرطية في بايثون مكتوبة كالتالي x if c else y (يختلف عن بقية اللغات الأخرى في ترتيب المعاملات من المعامل الشائع c ? x : y عن بقية اللغات المختلفة).
تميز بايثون بين القوائم والتعديدات (tuples). القوائم مكتوبة كـ [1, 2, 3]، قابلة للتغيير، ولا يمكن استخدامها كمفاتيح القواميس (مفاتيح القاموس غير قابلة للتغيير في بايثون). أما التعديدات: (1, 2, 3)، فهي غير قابلة للتغيير وبالتالي يمكن استخدامها كمفاتيح القواميس، شريطة أن تكون جميع عناصر التعديد غير قابلة للتغيير. يمكن استخدام عامل + لسَلسَّلة لتعديدتان، والتي لا تُعدل محتوياتها بشكل مباشر، بل تنتج تعديدة جديدة تحتوي على عناصر التعديدتين المقدمة. وبالتالي، بالنظر إلى المتغير t الذي يساوي مبدئيًا (1, 2, 3), فإن إجراء t = t + (4, 5)يقيِّم أولاً t + (4, 5)، والذي ينتج (1, 2, 3, 4, 5)، والتي تعين بعد ذلك إلى t، وبالتالي «تعديل محتويات»t بشكل فعال، مع التوافق مع الطبيعة الثابتة لكائنات التعديدة. ويجدر العلم إلى أن الأقواس اختيارية لمجموعة التعديدات في سياقات لا لبس فيها.
تتميز بايثون بتفريغ تسلسل حيث يرتبط تعبيرات متعددة، كل منها يتم تقيم إلى أي شيء يمكن تعيينه إلى (متغير، خاصية قابلة للكتابة، إلخ.)، بطريقة مماثلة لتلك التي تشكل حرفيات التعديدات، وبشكل عام، يتم وضعها على الجانب الأيسر من علامة المساواة في عبارة المساواة. تتوقع العبارة وجود كائن قابل للتكرار على الجانب الأيمن من علامة المساواة ينتج نفس عدد القيم التي تحتوي عليها التعبيرات القابلة للكتابة عند تكرارها من خلاله، وسوف تتكرر من خلاله، مع تعيين كل من القيم المنتجة للتعبير المقابلة على اليسار.
بايثون لديها عامل % «لتنسيق سلسلة نصية». هذه الوظيفة مشابهة للتنسيق الخاص بالسلسلة النصية printf في لغة سي، على سبيل المثال؛ "spam=%s eggs=%d" % ("blah", 2) تقيّم ك"spam=blah eggs=2". في بايثون 3 و2.6+ استكمل هذا بواسطة طريقة format() الخاصة ب الصنف str على سبيل المثال "spam={0} eggs={1}".format("blah", 2). بايثون 3.6 أضافت"f-strings" التالي:blah = "blah"; eggs = 2; f'spam={blah} eggs={eggs}'.
بايثون لديها حرفيات السلاسل النصية متنوعة:
سلاسل محددة بعلامات اقتباس مفردة أو مزدوجة. على عكس شل يونكس، وبيرل واللغات المتأثرة ب ب حيث تعمل علامات الاقتباس المفردة وعلامات الاقتباس المزدوجة بشكل متماثل وظيفياً. يستخدم كلا النوعين من الخط المائل (\) رمزًا للهروب. أصبح استكمال السلسلة النصية متاحًا في بايثون 3.6 كـ «سلسلة منسقة حرفياً».
سلاسل نصية بعلامات اقتباس ثلاثية، التي تبدأ وتنتهي بسلسلة من ثلاث علامات اقتباس مفردة أو مزدوجة. قد تمتد على عدة أسطر وتعمل مثل توثيقات هير الموجود في شيل وبيرل وروبي.
تشكيلة السلسلة النصية الخام، يُشار إليها بادئة السلسلة الحرفية بحرف r. لا يفسر تسلسل الهروب. ومن ثم تكون السلاسل النصية الأولية مفيدة عندما تكون الخطوط المائلة العكسية الحرفية شائعة، مثل التعبيرات النمطية والمسارات بنمط ويندوز. بالمقارنة مع «اقتباس-@» (@-quoting) في سي شارب.
لدى اقتباس بايثون quotPython تعبيرات فهرس مصفوفة شرائح المصفوفة (array slicing) في القوائم، يُشار إليها على أنها [مفتاح] a[key], أو [بداية: توقف]a[start:stop] أو [بداية: توقف: خطوة]a[start:stop:step]. الفهارس ذات أساس صفري، والفهارس السلبية تتعلق بالنهاية. تأخذ الشرائح العناصر من فهرس البداية حتى فهرس التوقف، ولكن لا تتضمنه. تسمح معلمة الشريحة الثالثة، المسماة خطوة أو مرحلة، بتخطي العناصر وعكسها. قد تهمل فهارس الشرائح، على سبيل المثال، تُرجع a[:]نسخة من القائمة بالكامل. كل عنصر في الشريحة هو نسخة ضحلة.
في بايثون، يفرض تمييز صارم بين التعبيرات والعبارات، على عكس اللغات مثل ليسب الشائع Common Lisp أو سكيم أو روبي. هذا يؤدي إلى تكرار بعض الوظائف. فمثلا:
اشتمال قائمة مقابل حلقة لأجل for-loops.
العبارات الشرطية مقابل كتل إذا if البرمجية.
ال ()eval مقابل ()exec دوال المرفقة (في ب ايثون 2،exec هي عبارة برمجية) الأول للتعبيرات، والثاني للعبارات البرمجية.
لا يمكن أن تكون العبارات جزءًا من تعبير، ل ذلك لا يمكن أن تحتوي القائمة وغيرها من الاشتمالات أو تعبيرات لامبدا (تعتبر كلها تعبيرات) على عبارات. وتبقى هناك حالة استثنائية تتمثل في أن عبارة المساواة (التعيين) مثل a = 1 لا يمكن أن تكون جزءًا من التعبير الشرطي لعبارة شرطية. وهذا يفيد في تجنب خطأ لغة سي الكلاسيكي عن غلطة في عامل التعيين = لعامل المساواة == في الشروط: إذا كان (c = 1) {...} : {... }if (c = 1) صالحًا من الناحية النحوية (ولكن غالبا هو غير مقصود) كشيفرة (كود) لغة سي بالمقابل ...:if c = 1 يسبب خطأً نحوياً في بايثون.