Những điểm khác nhau quan trọng giữa Python 2.x và Python 3.x


  • administrators

    1. Division operator

    Nếu bạn đang có một công việc nâng cấp phiên bản Python, vậy hãy chú ý tới phép chia. Xem ví dụ sau đây nhé.

    print 7 / 5
    print -7 / 5   
    
    Output in Python 2.x:
    1
    -2
    
    Output in Python 3.x:
    1.4
    -1.4
    

    2. Print function

    Đây là một trong những sự thay đổi được biết đến nhiều nhất từ bản Python 2.x lên Python 3.x

    print 'Hello, Geeks'      # Python 3.x doesn't support
    print('Hope You like these facts')
    
    Output in Python 2.x:
    Hello, Geeks
    Hope You like these facts
     
    Output in Python 3.x:
    File "a.py", line 1
        print 'Hello, Geeks'
                           ^
    SyntaxError: invalid syntax
    

    3. Unicode

    Trong Python 2.x, kiểu mặc định của String là ASCII, nhưng ở Python 3.x kiểu mặc định của String là Unicode

    print(type('default string '))
    print(type(u'string with b '))
    
    Output in Python 2.x (Unicode and str are different):
    <type 'str'>
    <type 'unicode'>
     
    Output in Python 3.x (Unicode and str are same):
    <class 'str'>
    <class 'str'>
    

    4. Xrange

    for x in xrange(1, 5):
        print(x),
     
    for x in range(1, 5):
        print(x),
    
    Output in Python 2.x:
    1 2 3 4 1 2 3 4
     
    Output in Python 3.x:
    NameError: name 'xrange' is not defined
    

    5. Error Handling

    Đây là một thay đổi nhỏ trên phiên bản 3.x, từ khoá as đã trở thành bắt buộc

    Kiểm tra không có từ khoá as trong 2 phiên bản Python

    try:
        trying_to_check_error
    except NameError, err:
        print err, 'Error Caused'   # Would not work in Python 3.x
    
    Output in Python 2.x:
    name 'trying_to_check_error' is not defined Error Caused
     
    Output in Python 3.x :
    File "a.py", line 3
        except NameError, err:
                        ^
    SyntaxError: invalid syntax
    

    Kiểm tra khi có từ khoá as trong 2 phiên bản Python

    try:
         trying_to_check_error
    except NameError as err: # 'as' is needed in Python 3.x
         print (err, 'Error Caused')
    
    Output in Python 2.x:
    (NameError("name 'trying_to_check_error' is not defined",), 'Error Caused')
     
    Output in Python 3.x:
    name 'trying_to_check_error' is not defined Error Caused
    


  • @Trương-Tuấn-Quang anh ơi cho em hỏi là cái Error Handling trong Python làm project thực tế áp dụng nhiều không và có thể ví dụ cho e 1 trường hợp không a?
    E hơi mơ hồ về cái này quá!


  • administrators

    @trurion Áp dụng nhiều chứ em. Ví dụ thực tế. Em có một hàm lưu một title kiểu string vào CSDL chẳng hạn. Nếu không nói trường hợp validate dữ liệu. Khi em try except , em sẽ bắt được những trường hợp người dùng ko truyền vào string (có thể truyền vào số chẳng hạn ....). Như vậy chương trình của em sẽ không bị crash.


Hãy đăng nhập để trả lời
 

Có vẻ như bạn đã mất kết nối tới Cộng đồng Python Việt Nam, vui lòng đợi một lúc để chúng tôi thử kết nối lại.