النظير في بيثون وجافا سكريبت. الجزء الأول

مرحبا يا هبر! أقدم لكم ترجمة مقال "معادلات بايثون وجافا سكريبت الجزء الأول" .


على الرغم من حقيقة أن Python و Javascript مختلفان تمامًا ، فهناك العديد من أوجه التشابه التي يجب على أي مطور متكامل أن يدركها. في هذه السلسلة من 4 مقالات ، سنرى ما هو شائع في كلتا اللغتين ، وسننظر في عدد من المشاكل المعروفة بالإضافة إلى طرق حلها.


هذا ليس مرجعًا ؛ لن تكون هناك معلومات أساسية حول أنواع المتغيرات ، ifs والحلقات.
لكننا سننظر في هياكل وعمليات أكثر تعقيدًا للبيانات باستخدام Python و Javascript.


سأوضح ذلك أيضًا بأمثلة عملية.


ستكون هذه السلسلة ذات أهمية للمؤلفين الذين يستخدمون Django أو Flask أو أي إطار عمل Python آخر يريد معرفة المزيد عن جافا سكريبت الحديث. من ناحية أخرى ، ستكون هذه المقالات مفيدة للعدائين الذين يرغبون في فهم أفضل لكيفية عمل الواجهة الخلفية ، أو حتى كتابة موقعهم على Django.


مقالات أخرى في هذه السلسلة:


  1. الجزء الثاني : JSON ، النظامي ، أخطاء الاستثناء
  2. الجزء الثالث : Python و JS الحديث: أنماط السلسلة (سلاسل f) ، تفريغ القوائم ، وظائف لامدا ، قائمة التكرار ، المولدات ، المجموعات.
  3. الجزء الرابع هو الحجج الوظيفية ، وخلق والعمل مع الطبقات ، والميراث ، و gitter وخصائص الطبقة.

اكتب cast


لنبدأ بإلقاء السلسلة على الكل. في Python ، كل شيء بسيط ومباشر:


number = int(text) 

ولكن في JS عليك أن توضح النظام الذي ستؤدي إليه - عشري أو ثماني أو سداسي عشري أو ثنائي:


 number = parseInt(text, 10); 

لاستخدام النظام العشري المعتاد ، نمرر 10 كوسيطة ثانية للدالة parseInt (). 8 للثمانية ، 16 للست عشري أو 2 للثنائي. إذا تم حذف المعلمة الثانية ، يبدأ الرقم من الصفر وتستخدم متصفحًا قديمًا ، سيتم تفسير السطر الذي يحتوي على النص على أنه نظام ثماني:


 parseInt('012') == 10 //     parseInt('012', 10) == 12 

التعيين الشرطي


على الرغم من أن Python و JS يستخدمان بنية مختلفة لهذا ، فإن هذه العملية شائعة في كلتا اللغتين. إنه شائع لأنه في تعبير واحد من الممكن تعيين قيم مختلفة لكل من حالات True و False.
بدءًا من Python 2.7 ، تبدو المهمة الشرطية كما يلي:


 value = 'YES' if positive == True else 'NO' 

في جافا سكريبت ، يتم التعيين الشرطي باستخدام عامل ثلاثي ? وكذلك في C و C ++ و C # و Java و Ruby و PHP و Perl و Swift و ActionScript:


 value = positive === true? 'YES': 'NO'; 

الوصول إلى خاصية كائن بواسطة اسم الخاصية


الطريقة المعتادة للوصول إلى خاصية كائن في كل من Python و JS هي نفسها:


 obj.color = 'YELLOW' 

ولكن ماذا لو تم تضمين اسم الخاصية في متغير سلسلة؟ على سبيل المثال ، يمكن الحصول على اسم الخاصية من قائمة الخصائص أو يتكون اسم الخاصية من متغيرين للسلسلة: "title" + land_code .
في Python ، getattr() و setattr() لهذا:


 attribute = 'color' value = getattr(obj, attribute, 'GREEN') setattr(obj, attribute, value) 

في JS ، يمكنك معاملة كائن مثل القاموس وتمرير اسم الخاصية بين قوسين معقوفين:


 attribute = 'color'; value = obj[attribute] || 'GREEN'; obj[attribute] = value; 

للحصول على القيمة الافتراضية في حالة عدم وجود خاصية بنفس الاسم ، فإن getattr() في Python لها معلمة ثالثة لهذا. في JS ، إذا كانت الخاصية المطلوبة مفقودة ، فستعود الدالة undefined . يمكن مقارنته OR مع القيمة الافتراضية - هذه ممارسة قياسية في JS - يمكن العثور على هذه الطريقة في العديد من الأطر والمكتبات.


الوصول إلى القاموس الرئيسي


على غرار ما سبق. يشار إلى المفتاح بشكل قياسي بين قوسين معقوفين باللغتين:


 dictionary = {} dictionary['color'] = 'YELLOW' 

للوصول إلى المفتاح ، تستخدم Python بناء الجملة القياسي مع الأقواس المربعة ، ومع ذلك ، إذا كان هذا المفتاح مفقودًا ، فسيؤدي ذلك إلى استثناء مع خطأ KeyError .
أكثر مرونة هي طريقة get() ، التي ستُرجع بلا إذا None يكن هناك مفتاح. يمكنك أيضًا تمرير قيمة سيتم إرجاعها إذا كان المفتاح مفقودًا:


 key = 'color' value = dictionary.get(key, 'GREEN') 

في JS ، يمكنك القيام بنفس الحيلة مع خاصية كائن - OR بقيمة افتراضية:


 key = 'color'; value = dictionary[key] || 'GREEN'; 

الشرائح: القوائم والسلاسل


لدى Python عامل تشغيل [:] للحصول على جزء من قائمة أو مجموعة أو هياكل مماثلة. مثال لكائن من نوع Django QuerySets :


 items = [1, 2, 3, 4, 5] first_two = items[:2] # [1, 2] last_two = items[-2:] # [4, 5] middle_three = items[1:4] # [2, 3, 4] 

يحتوي JS على طريقة slice() بنفس التأثير:


 items = [1, 2, 3, 4, 5]; first_two = items.slice(0, 2); // [1, 2] last_two = items.slice(-2); // [4, 5] middle_three = items.slice(1, 4); // [2, 3, 4] 

ولكن لا تخلط مع طريقة splice() التي تعدل المصفوفة الأصلية!


في Python ، ينطبق عامل [:] أيضًا على السلاسل:


 text = 'ABCDE' first_two = text[:2] # 'AB' last_two = text[-2:] # 'DE' middle_three = text[1:4] # 'BCD' 

في JS ، تحتوي السلاسل أيضًا على طريقة slice() :


 text = 'ABCDE'; first_two = text.slice(0, 2); // 'AB' last_two = text.slice(-2); // 'DE' middle_three = text.slice(1, 4); // 'BCD' 

عمليات القائمة


في البرمجة ، غالبًا ما يتعين عليك جمع سلسلة من العناصر وتحليلها. في Python ، تُستخدم القوائم عادةً لهذا الغرض ، وفي Javascript ، المصفوفات. لديهم بنية وعمليات مماثلة ، ولكن طرق مختلفة لإضافة العناصر وإزالتها.


نقوم بتوصيل القائمتين ، وإضافة عنصر واحد إلى النهاية ، وإضافة عنصر واحد إلى البداية ، والحصول على العنصر وحذفه في البداية ، والحصول على العنصر وحذفه من النهاية وحذف العنصر المحدد حسب الفهرس.
بايثون:


 items1 = ['A'] items2 = ['B'] items = items1 + items2 # items == ['A', 'B'] items.append('C') # ['A', 'B', 'C'] items.insert(0, 'D') # ['D', 'A', 'B', 'C'] first = items.pop(0) # ['A', 'B', 'C'] last = items.pop() # ['A', 'B'] items.delete(0) # ['B'] 

نفس الشيء في Javascript:


 items1 = ['A']; items2 = ['B']; items = items1.concat(items2); // items === ['A', 'B'] items.push('C'); // ['A', 'B', 'C'] items.unshift('D'); // ['D', 'A', 'B', 'C'] first = items.shift(); // ['A', 'B', 'C'] last = items.pop(); // ['A', 'B'] items.splice(0, 1); // ['B'] 

انضم إلى مجموعات من السلاسل


قم بدمج مجموعة من عناصر السلسلة في سطر واحد باستخدام مسافة أو فاصلة أو سطر جديد كحرف متصل.


في Python ، يتم استخدام طريقة السلسلة join() لهذا ، والتي تأخذ قائمة أو مجموعة tuple كوسيطة. بالنسبة للمبتدئين (في صيغة Python) ، قد يبدو من الغريب أن تبدأ تعبيرًا باستخدام فاصل ، ولكن بعد الاستخدام المنتظم ، ستعتاد على هذا النوع من التدوين:


 items = ['A', 'B', 'C'] text = ', '.join(items) # 'A, B, C' 

في JS ، تحتوي المصفوفات على طريقة join() مع فاصل كوسيطة:


 items = ['A', 'B', 'C']; text = items.join(', '); // 'A, B, C' 

لتلخيص


  • القوائم والصفوف في Python تتوافق مع المصفوفات في جافا سكريبت.
  • تتوافق القواميس في Python مع الأشياء الموجودة في Javascript.
  • السلاسل في Python مماثلة للسلاسل في Javascript.
  • في جافا سكريبت ، قم بصب سلسلة إلى رقم بحذر ، وتذكر أنظمة الأرقام.
  • توجد التعبيرات الشرطية أحادية السطر بلغاتهم.
  • إن تركيبة تسلسل السلاسل ( ' '.join ) في Python يثبط غير ' '.join في بناء الجملة ، لكنك تعتاد عليه بسرعة.

في السلسلة التالية ، سننظر في إنشاء JSON وتحليلها ، والتعبيرات العادية ، ومعالجة الأخطاء والاستثناءات!

Source: https://habr.com/ru/post/ar416617/


All Articles