python2與python3之間的主要區別


python2與python3之間的主要區別

  • print

py2:print語句,語句就意味着可以直接跟要打印的東西,如果后面接的是一個元組對象,直接打印

py3:print函數,函數就以為這必須要加上括號才能調用,如果接元組對象,可以接收多個位置參數,並可以打印

如果希望在 Python2 中 把 print 當函數使用,那么可以導入 future 模塊 中的 print_function

下面有個示例:

# py2
>>> print("hello", "world")
('hello', 'world')
# py3
>>> print("hello", "world")
hello world
# py2
>>> print("hello", "world")
('hello', 'world')
>>> from __future__ import print_function
>>> print("hello", "world")
hello world
  • 輸入函數

py2:input_raw()

py3:input()

  • 在使用super()的不同

py2:必須顯示的在參數中寫上基類

py:直接無參數調用即可

  • 1/2的結果

py2:返回0

py3:返回0.5,沒有了int和long的區別

  • 編碼

py2:默認編碼ascii

py3:默認編碼utf-8

而且為了在py2中使用中文,在頭部引入coding聲明,不推薦使用

  • 字符串

py2:unicode類型表示字符串序列,str類型表示字節序列

py3::str類型表示字符串序列,byte類型表示字節序列

  • True和False

py2:True 和 False 在 Python2 中是兩個全局變量,可以為其賦值或者進行別的操作,初始數值分別為1和0,雖然修改是違背了python設計的原則,但是確實可以更改

py3:修正了這個變量,讓True或False不可變

  • 迭代器

py2:當中許多返回列表的方法,如range,字典對象的 dict.keys()、dict.values() 方法, map、filter、zip;並且迭代器必須實現next方法

py3:將返回列表的方法改為了返回迭代器對象,內置了__next__,不用特意去實現next

  • nonlocal

py2:沒有辦法在嵌套函數中將變量聲明為一個非局部變量,只能在函數中聲明全局變量

py3:nonlocal方法實現了,示例如下:

def func():
 c = 1
    def foo():
        c = 12
    foo()
    print(c)
func()    #1
def func():
    c = 1
    def foo():
        nonlocal c
        c = 12
    foo()
    print(c)
func()   # 12


免責聲明!

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



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