الفرق Python2.x مع الإصدار 3 .X
3.0 إصدارات بيثون، وغالبا ما يشار إليها باسم بيثون 3000، أو ببساطة Py3k. وفيما يتعلق إصدار سابق من بيثون، وهذا هو ترقية رئيسية.
لكي لا تجلب الكثير من الأعباء، بيثون 3.0 لا تنظر في تصميم التوافق نحو الانخفاض.
بالنسبة للعديد من البرامج وتصميم الإصدارات السابقة من بيثون يتم تنفيذ بشكل صحيح على بايثون 3.0.
من أجل رعاية البرنامج الحالي، بيثون 2.6 كنسخة المؤقت للالإصدار 2.x بيثون باستخدام بناء الجملة الأساسية والمكتبات، مع الأخذ بعين الاعتبار الهجرة إلى بايثون 3.0 وبيثون 3.0 يسمح باستخدام جزء من بناء جملة الدالة.
وأوصى برنامج جديد لاستخدام بايثون 3.0 بيثون نسخة بناء الجملة.ما لم البيئة التنفيذ لا يمكن تثبيت بيثون 3.0 أو البرنامج نفسه لا تدعم استخدام طرف ثالث المكتبات بيثون 3.0. حاليا لا يدعم طرف ثالث المكتبات بيثون 3.0 هي ملتوية، py2exe، PIL، وما شابه ذلك.
معظم المكتبات طرف ثالث يحاول الثعبان الإصدار 3.0 متوافق. إذا لم تستخدم فورا بيثون 3.0، وأوصت أيضا تطوير متوافق مع الإصدار 3.0 بيثون من البرنامج، ومن ثم استخدام بايثون 2.6، يتم تنفيذ بيثون 2.7.
التغييرات في بيثون 3.0 أساسا في المجالات التالية:
وظيفة الطباعة
هو ذهب العبارة الطباعة، وحلت محلها وظيفة الطباعة (). بيثون 2.6 و الثعبان دعم 2.7 في جزء هذا الشكل من جملة الطباعة. في بيثون 2.6 و 2.7 بيثون في الداخل، ثلاثة أشكال هي ما يعادلها:
print "fish" print ("fish") #注意print后面有个空格 print("fish") #print()不能带有任何其它参数
ومع ذلك، بيثون 2.6 ودعم الواقع بناء الجملة طباعة جديدة ():
from __future__ import print_function print("fish", "panda", sep=', ')
يونيكود
وكان الثعبان 2 ASCII شارع () نوع، يونيكود () وحده، وليس نوع بايت.
الآن، في بيثون 3، لدينا أخيرا يونيكود (UTF-8) سلسلة وبايت الدرجة: بايت وbytearrays.
لأن Python3.X ملف المصدر الافتراضية ترميز UTF-8، مما يجعل البرمجية التالية القانوني:
>>> 中国 = 'china' >>>print(中国) china
بيثون الإصدار 2.x
>>> str = "我爱北京天安门" >>> str '\xe6\x88\x91\xe7\x88\xb1\xe5\x8c\x97\xe4\xba\xac\xe5\xa4\xa9\xe5\xae\x89\xe9\x97\xa8' >>> str = u"我爱北京天安门" >>> str u'\u6211\u7231\u5317\u4eac\u5929\u5b89\u95e8'
بيثون الإصدار 3.x
>>> str = "我爱北京天安门" >>> str '我爱北京天安门'
تقسيم
تقسيم الثعبان في لغات أخرى من نهاية عالية جدا، وهناك مجموعة معقدة جدا من القواعد. الثعبان في دوري الدرجة مع اثنين من المشغلين، و/ //
الأولى، / الشعبة:
في بيثون الإصدار 2.x / تقسيم تماما مثل معظمنا معتادا على اللغة، مثل جافا آه آه C مشابه لنتائج عملية قسمة عدد صحيح كان عدد صحيح، يتم تجاهل الجزء الكسري تماما، وسوف تظل العشري تقسيم نقطة عائمة جزء من الحصول على نتائج عدد الفاصلة العائمة.
في بيثون الإصدار 3.x / قسم لم يعد يفعل ذلك، والانقسام بين الأعداد الصحيحة، فإن النتيجة ستكون تعويم.
بيثون الإصدار 2.x:
>>> 1 / 2 0 >>> 1.0 / 2.0 0.5
بيثون الإصدار 3.x:
>>> 1/2 0.5
ل// التقسيم، ويسمى هذا التقسيم تقسيم الأرض، والنتيجة سوف تقسيم تلقائيا عملية الكلمة هي نفسها في 2.x الثعبان والثعبان الإصدار 3.x في.
الثعبان الإصدار 2.x:
>>> -1 // 2 -1
الثعبان الإصدار 3.x:
>>> -1 // 2 -1
لاحظ أنه لا يتخلص من الجزء الكسري، ولكن للقيام في الطابق العملية، إذا كنت تريد أن اعتراض الجزء الكسري، تحتاج إلى استخدام وظيفة الرياضيات وحدة TRUNC
الثعبان الإصدار 3.x:
>>> import math >>> math.trunc(1 / 2) 0 >>> math.trunc(-1 / 2) 0
غير طبيعي
المعالجة في بيثون 3 هو أيضا تغيرات غير طبيعية قليلا، في بيثون 3، ونحن نستخدم الآن ككلمة رئيسية.
بناء الجملة من أجل اصطياد استثناءاتإلا مريض بالحب، تغيرت فارإلا مريض بالحب كما فار.
بناء الجملة باستثناء (exc1، exc2) كما فار يمكن تصفية الاستثناءات فئات متعددة. بيثون 2.6 لديه الدعم لكلا بناء الجملة.
- 1. الإصدار 2.x العصر، كلها أنواع من الكائنات التي يمكن القيت مباشرة في عصر 3.x و ورثت فقط من الأجسام BaseException يمكن طرح.
- 2. بيان الإصدار 2.x رفع يلقي فاصلة لأنواع منفصلة كائن والمعلمات، الإصدار 3.x إلغاء هذه العبارة الرائعة الاتصال مباشرة منشئ يلقي كائن يمكن أن يكون.
في عصر الإصدار 2.x، التشوهات في قانون بالإضافة إلى أن أخطاء إجرائية، ولكن أيضا في كثير من الأحيان لا بعض هياكل المراقبة المشتركة يجب القيام به، في الإصدار 3.x يمكن أن يرى، والمصممين إجراء تغيير غير طبيعي أكثر تحديدا فقط في الخطأ باستثناء حالة من أجل اللحاق بيان في التعامل معها.
xrange
إنشاء التكرار الكائن في بايثون 2 في استخدام xrange () تحظى بشعبية كبيرة. على سبيل المثال: لحلقة أو comprehensions قائمة / جمع / القاموس.
هذا الأداء هو مولد صورة للغاية (على سبيل المثال. "تقييم كسلان"). ولكن xrange-iterable هو لانهائي، وسائل غير محدودة يمكنك أن تجتاز.
بسبب تقييم كسول، وليس فقط إذا لم تتمكن من اجتياز مرة واحدة، xrange () مجموعة نسبة وظيفة () أسرع (على سبيل المثال لدورات). ومع ذلك، بالمقارنة مع التكرار واحد، لا ينصح التكرار أنك كرر عدة مرات، لأن مولد من الصفر في كل مرة.
في بيثون 3، ومجموعة () مثل xrange () وذلك لتحقيق وظيفة xrange محددة () لم يعد موجودا (في بيثون 3 xrange () سوف بطرح اسم استثناء).
import timeit n = 10000 def test_range(n): return for i in range(n): pass def test_xrange(n): for i in xrange(n): pass
الثعبان 2
print 'Python', python_version() print '\ntiming range()' %timeit test_range(n) print '\n\ntiming xrange()' %timeit test_xrange(n) Python 2.7.6 timing range() 1000 loops, best of 3: 433 µs per loop timing xrange() 1000 loops, best of 3: 350 µs per loop
بيثون 3
print('Python', python_version()) print('\ntiming range()') %timeit test_range(n) Python 3.4.1 timing range() 1000 loops, best of 3: 520 µs per loop
print(xrange(10)) --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-5-5d8f9b79ea70> in <module>() ----> 1 print(xrange(10)) NameError: name 'xrange' is not defined
ثماني التمثيل الحرفي
يجب كتابة رقم ثماني 0o777، والنموذج الأصلي من 0777 لا يمكن استخدامها، ويجب أن تكون مكتوبة في 0b111 ثنائي.
يستخدم أضاف وظيفة بن () لتحويل عدد صحيح إلى سلسلة الثنائية. بيثون 2.6 لديه الدعم لكلا بناء الجملة.
في بيثون 3.x و وثماني الحرفي سوى طريقة واحدة، وهذا هو 0o1000.
الثعبان الإصدار 2.x
>>> 0o1000 512 >>> 01000 512
الثعبان الإصدار 3.x
>>> 01000 File "<stdin>", line 1 01000 ^ SyntaxError: invalid token >>> 0o1000 512
المشغلين عدم المساواة
بيثون الإصدار 2.x لا يعني هناك طريقتان لكتابة! = و<>
بيثون 3.x إلى إسقاط <> فقط! = الطريق إلى الكتابة، ولكن لحسن الحظ، لم أكن استخدام <> الحمية
إزالة التعبير `` repr
الإصدار 2.x بيثون في الاقتباس الظهر `` وظيفة repr ما يعادل دور
بيثون 3.x إلى إسقاط `` التدوين، يسمح فقط وظيفة repr، والغرض من ذلك هو جعل رمز تبدو أكثر وضوحا ذلك؟ لكني أشعر الفرصة لrepr نادرا، وعادة فقط عندما يتم استخدامها في التصحيح، أكثر من مرة أو استخدام وظيفة شارع إلى سلسلة وصف الكائن.
def sendMail(from_: str, to: str, title: str, body: str) -> bool: pass
تتم إعادة تسمية وتعدد وحدات (وفقا PEP8)
الاسم القديم | اسم جديد |
---|---|
_winreg | winreg |
ConfigParser | configparser |
copy_reg | copyreg |
طابور | طابور |
SocketServer | socketserver |
repr | reprlib |
أدرج حدة StringIO الآن إلى وحدة الإعلام والتوعية جديدة. يتم حذف، MD5، وحدات gopherlib جديدة. بيثون 2.6 لديها دعم وحدة الإعلام والتوعية جديدة.
httplib، BaseHTTPServer، CGIHTTPServer، SimpleHTTPServer، كوكي، cookielib يتم دمجها في حزمة HTTP.
إلغاء بيان إكسيك، وظيفة فقط إكسيك (). بيثون 2.6 ديه وظيفة الدعم الذي exec ().
5. أنواع البيانات
1) Py3.X إزالة نوع طويل، والآن لا يوجد سوى --int عدد صحيح واحد، ولكنه يتصرف وكأنه نسخة 2.X لفترة طويلة
2) وأضاف بايت اكتب المقابلة لالإصدار 2.x من سلسلة ثمانية، تحدد طريقة الحرفي بايت كما يلي:
>>> b = b'china' >>> type(b) <type 'bytes'>
الأشياء شارع وبايت أشياء يمكن استخدام .encode () (شارع -> بايت) أو .decode () (بايت -> شارع) طريقة في بعضها البعض.
>>> s = b.decode() >>> s 'china' >>> b1 = s.encode() >>> b1 b'china'
3) ديكت من .keys ()، ويتم التخلص منها البنود و.values () الأسلوب بإرجاع مكرر، في حين أن iterkeys سابقة () وغيرها من المهام. وفي الوقت نفسه إزالة هناك dict.has_key ()، والاستعاضة عنها في ذلك.