ما هي الميزات المستخدمة / غير المستخدمة لبثيون 3؟

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

  •  06-09-2019
  •  | 
  •  

سؤال

لقد قمت مؤخرا ببعض تصميم الويب كهواية مع الدافع الأساسي لتعلم أشياء مثيرة للاهتمام. كان من الجميل بالتأكيد أن يتعلم بيثون، لكنني اكتشفت أن هناك مجرد إعادة كتابة بيثون رائعة بعد فوات الأوان، لذلك اضطررت لتعلم كل من بيثون 3 و 2.6 أساسا.

أنا مبتدئ، لذلك أود أن أشارك الناس ما يعتقدون أن نقاط القوة / نقاط الضعف في بيثون 3 هي من منظور أولئك الذين يقومون برمجة المستخدم النهائي بدلا من مصممي اللغة. سيكون سؤالي أكثر من ما يعجبه الناس بالفعل إلى نقطة استخدام، أو شونينغ بأنها غير مثمرة أو غير مثيرة.

لي، with البيان واضح زائد، أثناء كسر print المشغل هو بالتأكيد ناقص.

توضيح تحرير: هناك العديد من الوظائف التي تسأل عما إذا كان ينبغي على المرء أن يتعلم بيثون 2 أو 3 أو ما إذا كان هناك أي فرق. أرى أن سؤالي مختلف: ردود الفعل من الأشخاص الذين يعانون من أي سبب جعل اختيار استخدام بيثون 3 ولكن قد يكون له رأي حول ما يعمل بشكل أفضل، ما لا.

توضيح آخر: تمت الإشارة إليه في الإجابات التي with يتم التراجع عن 2. *. اعتذارات.

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

المحلول

حسنا نقطة قوية هي التوضيح بين البايتات والسلسلة. كم مرة في تجربة Python القصيرة الخاصة بك قد تم الخلط بينها مع غير واضح UnicodeDecodeError و UnicodeEncodeErrorب إذا لم يكن لديك أي مشاكل مع Unicode VS iTeTestrings، فمن المحتملات جيدا أنك تستخدم لغة ASCII فقط، (الإنجليزية؟؛) ولكن هذا هو عادة المفهوم الذي هو الأصعب لفهم للمبتدئين. (بالمناسبة، إذا كنت لا تزال مرتبكة، هذا الرابط يجب أن يساعد لبيتثون 2.x)

أعتقد حقا أن هذا التمييز بين Str، و Bytes، هو أحد النقاط القوية في Python3.0. اقرأ بيب 358. للحصول على وصف رسمي، و فئة Diveintopython لشيء أكثر توجه نحو المستخدم النهائي. هذه الميزات الجديدة مطوري القوات للحفاظ على صافي التمييز بين كائنات Unicode، وكائنات البايتات التي يتم ترميزها في ترميز محدد. أعتقد أن هذا التغيير سوف يساعد القادمين الجدد على فهم الفرق بسهولة أكبر بين الهياكل، وسيساعد المطورين ذوي الخبرة باستخدام طرق البرمجة العاقل.

ولكن بالطبع هذا التغيير يحتوي على إزعاج خاص به: تطبيقات Porting 2.x صعبة للغاية، وهؤلاء STR + Unicode إلى STR + BYTES التغيير هو أكثر شيء مزعج للتغيير إذا لم تقم بالفعل بفصل Unicode و Byte Strings في 2 كود. مزعج، ولكن منذ فترة طويلة.

تبدو تلك التغييرات العاجلة مزعجة لكثير من المستخدمين، و ... مزعج لتنفيذ لافتبريات / حلول مهمة. القوة الحالية ل Python2.x هي العديد من تطبيقات / وحدات من طرف ثالث: ولكن نظرا لأنه في بعض الأحيان غير تافهة للمنفذ إلى Python3، ستحتاج هذه تطبيقات الطرف الثالث إلى بعض الوقت ليتم استئنافها (ولأن 2.x لا يزال على قيد الحياة، ستحتاج هذه التطبيقات إلى الحفاظ على نسختين: واحد يهدف إلى 2.x العملاء، وواحد إلى 3.x ... الصيانة المكلفة!) في العام المقبل، سيكون عدد التطبيق الكامل تشغيل Python3 تماما منخفضة، بسبب انخفاض عدد أطراف ثالثة متوافقة من Python3. ولكن مرة أخرى، أنا أدعم بقوة هذه التغييرات كسر هذه: هل قرأت هذا قرد، موز، بيثون (3)? ;)

نصائح أخرى

أنا لا أستخدم بيثون 3 "في الإنتاج"، ومع ذلك، ولكن في اللعب معها وجدت ذلك print كونها وظيفة هي فكرة رائعة - على سبيل المثال، يمكنني بسهولة وضعه في lambda الآن، حيث في 2. * لا بد لي من استخدام sys.stdout.write("%s\n" % foo), ، crufty قليلا. بالإضافة إلى ذلك، بناء الجملة لهذه القرص باستخدام ملف إخراج مختلف عن sys.stdout أو إزالة النهائي \n يكون وبالتالي أكثر اقرأا من بيثون 2. *

بالمناسبة، with هو أيضا في بيثون الأخيرة 2. * إصدارات، إنها ليست بيثون 3 - حصرية.

أعتقد أن كل ما فعلوه هو الأفضل، على المدى الطويل. أزالوا الكثير من الطرق المهملة للقيام بالأشياء، وبالتالي فرض "هناك طريقة واحدة فقط للقيام بذلك" وزيادة الاتساق. أيضا، with البيان رائع.

المشكلة الواضحة مع استخدام Python 3 هي افتقارها إلى دعم الكثير من المكتبات [الكبيرة] هناك (مثل Django). إذا لم تكن أي من المكتبات الخاصة بك مع Python 3، فلا يوجد سبب لعدم استخدامه.

أنا حقا أحب فهم القاموس:

{k: v for k, v in stuff}

و تمديد التكرار:

(head, *rest) = range(5)

هذا هوية حقا. Python3.x هو بالتأكيد تحسن على 2.x. أنه يحتوي على تغييرات طويلة المتوقعة مثل: الفهم القاموس، القاموس المطلوب، تنسيق سلسلة أكثر قوة ... إلخ لا ذكر مكتبة الأنظف.

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