Latest web development tutorials

الفرق 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 ()، والاستعاضة عنها في ذلك.