簡述Python2與Python3的區別


Python2與Python3的區別

  1. python解釋器默認編碼(python2與python3的區別一)

    • python2 解釋器默認編碼:ascii
    • python3 解釋器默認編碼:utf-8
  2. 輸入(python2與python3的區別二)

    • python2:name=raw_input('請輸入姓名')
    • python3:name=input('請輸入你的姓名')
  3. 輸出(python2與python3的區別三)

    • python2:print "你好"
    • python3:print("你好")
  4. 數字表示(python2與python3的區別四)

    • python2

      • 64位機器,范圍-263~263-1

      • 超出上述范圍,python自動轉化為long(長整型)

        注:long(長整型)數字末尾有一個L

    • python3

      • 所有整型都是int,沒有long(長整型)
  5. 整型除法(python2與python3的區別五)

    • python2:只能保留整數位
    • python3:可以保留所有內容
  6. range / xrange(python2與python3的區別六)

    • python2:
      • xrange:不會在內存中立即創建,而是在循環時,邊循環邊創建
      • range:在內存立即把所有的值創建
    • python3:
      • 只有range,相當於python2中的xrange
      • range:不會在內存中立即創建,而是在循環時,邊循環邊創建
  7. 包的定義(python2與python3的區別七)

    • python2:文件夾中必須有_ _ init _ _.py文件
    • python3:不需要有_ _ init _ _.py文件
  8. 字典的keys / values / items方法(python2與python3的區別八)

    • python2:返回列表,通過索引可以取值
    • python3:返回迭代器,只能通過循環取值,不能通過索引取值
  9. map / filter(python2與python3的區別九)

    • python2:返回列表,直接創建值,可以通過索引取值
    • python3:返回迭代器,不直接創建值,通過循環,邊循環邊創建
  10. str(字符串類型)的區別(python2與python3的區別十)(最大區別,優先寫這個)

    • python2:
      • str類型,相當於python3中的字節類型,utf-8/gbk等其他編碼
      • unicode類型,相當於python3中的字符串類型,unicode編碼
      • python2中沒有字節類型
    • python3:
      • str類型,字符串類型,unicode編碼
      • python3中沒有unicode類型
  11. 繼承object(python2與python3的區別十一):

    class Foo:
        pass
    class Foo(object):
        pass
    # 在python3中這倆的寫法是一樣,因為所有的類默認都會繼承object類,全部都是新式類。
    # 如果在python2中這樣定義,則稱其為:經典類
    class Foo:
        pass 
    # 如果在python2中這樣定義,則稱其為:新式類
    class Foo(object):
        pass
    # 新式類
    # 繼承object
        # 支持super
        # 多繼承 廣度優先C3算法
        # mro方法
    # 經典類
        # py2中不繼承object
        # 沒有super語法
        # 多繼承 深度優先
        # 沒有mro方法
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM