python3新特點


#xiaodeng
#python 3


#1、編碼方式和性能
'''
1、py3運行效率更快
2、默認源文件編碼ASCII變為UTF-8,以前文件前加入的coding=utf-8不再需要
3、針對unicode的處理有了明顯的改善,效率明顯提升
'''


#2、數據類型和基本運算
'''
1、int和long進行了統一,統一為int
2、True、False、None都是關鍵詞
3、必須以b'...'表示二進制數據,可以使用u'..'表示字符串,不加u也表示字符串
4、移除<>不等號,使用“!=”表示不等號關系
    1)2!=3
    2)2<>3 #出現語法錯誤
5、調整除法符號‘/’的用法,只返回浮點數,要返回整數要使用“//”
6、py3運算對數據的類型要求更加的嚴格
'''

def foo(test=None):
    if test is None:
        print (test)
foo()


print (5/2)   #浮點數
print (5//2)   #整數
print (1/3)

#4、print和exec用法
'''
1、print是一個函數,不再是一個語句,其中不需要用空格,后面打印的內容需要有括號括起來
2、exec函數用法發生變化
'''

def foo():
    _local=locals()
    exec('a=4',globals(),_local)
    a=_local['a']
    print(a)
foo()

#5、input、bin、oct和for循環
'''
1、raw_input統一為input
    在py2中用法為:
    1)a=raw_input('請輸入:')
       print a
    2)a=input('請輸入:')  #接收一個有效的表達式,如:2+3,而不能單獨接收3
       print a
2、for循環的變量不再泄露在全局變量中,此bug已修復
    1)Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on win32
    Type "copyright", "credits" or "license()" for more information.
    >>> i=8
    >>> print [i for i in range(5)]
    [0, 1, 2, 3, 4]
    >>> print i
    4   #按照道理來講for循環中的i與最外面的i=8的i是不同的,但是這里。。。。。
    >>>

    2)
    i=6
    print([i for i in range(5)])#結果為[0, 1, 2, 3, 4]
    print(i)#結果i=6
'''
#6、a=input('請輸入:')#這里不再需要一個有效的表達式,他的用法和raw_input相同
#print(a)


#7、range和dict的變化
'''
1、在python2中,range火xrange會創建一個列表。常出現在for循環、字典、列表中,但是py3中xrange改名為range,在python3中使用
使用xrange會觸發錯誤。同時range返回的是可迭代對象而不再是列表形式,要想使range的結果得到一個list數據必須要使用list(range(5))
2、字典內的dict.iterkeys(),dict.itervalues(),dict.iteritems()被keys() and values() and items()所替代
他們的返回結果類似於集的可迭代對象,而不是鍵值對的列表。從而在不進行鍵和值條目復制的情況下就能對其執行set操作

'''

a=range(6)
print(a)#result:range(0,6)對象,不是列表
print(list(a))#result:[0, 1, 2, 3, 4, 5]
for i in range(6):
    print(i)

#print(xrange(5))   #報錯:提示為name"xrange" is'not defined

#dict案例
d={'name':"iaodeng",'sex':28}
print(d.items())
print(type(d.items()))      #<class 'dict_items'>
#返回結果                   dict_items([('name', 'iaodeng'), ('sex', 28)])
#這里不再是列表形式
'''
Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> d={'name':"iaodeng",'sex':28}
>>> print d
{'name': 'iaodeng', 'sex': 28}
>>> print d.items()
[('name', 'iaodeng'), ('sex', 28)]
>>> print d.iteritems()                 #返回一個可迭代對象
<dictionary-itemiterator object at 0x0275E930>
>>> for i in d.iteritems():print i
('name', 'iaodeng')
('sex', 28)
>>>
'''
print('xiaodeng:    d.keys():',d.keys())    #xiaodeng:    d.keys(): dict_keys(['name', 'sex'])
print(type(d.keys()))#<class 'dict_items'>

#values()同理


print("既然是可迭代對象,那么還可以進行下面操作")
for i  in d.items():
    print(i)
for key in d.keys():
    print(key)
print("values用法同理")
print('用list將可迭代對象轉化為list數據')
print(list(d.values()))


#7、python3具有單一的str類型,其類型相當於python2的unicode,python3所有的字符串都是unicode
#新增bytes類型
a=b"china"
print(type(a))  #<class 'bytes'>
#str和tytes對象都可以使用encode和decode來進行轉化
s=a.decode()
print(s)        #china 字符串類型
s=s.encode()
print(s)        #b"china",   tytes字節類型




#8、輸入和輸出
a=open('test.txt','w')
a.write("write in something")
a.close()
b=open("test.txt","r")
print(b.read())         #note:注意加括號
"""
1、如果要對文本執行任何I/O操作,python3會強制用戶使用文本模式,打開文件,如果不想使用默認編碼utf-8
通常需要指明所需的編碼
2、如果對二進制數據進行I/O操作,必須使用二進制模式打開文件或進行讀寫操作
    eg:
        f=open("test1.txt","wb+")   #二進制追加模式
        f.write(b"w love fengmei")      #必須加b,以bytes對象的形式進行寫入
        f.close()
    file=open(filename,mode)
    mode:
    r:只讀模式
    w:只寫,如果文件已存在則會進行覆蓋操作,所以格外小心,如果文件不存在則創建新的文件
    a:打開文件用於追加,只寫如果文件不存在則創建
    b:二進制,不能單獨使用
    經過演變會有很多形式
"""


#9、迭代器
"""
1、range在python3中返回顆迭代對象二不是列表,最大限度節約內存
2、zip(),map(),filter(),key(),value()返回的均是可迭代對象
"""

#10、異常錯誤處理
"""
1、必須使用關鍵詞as,try 和except NameError as e語句
2、案例:
    python 2
    try:
        something
    except NameError,err:
        print err

    python3
    try:
        something
    except NameError as err:
        print(err)
3、raise觸發語法用法的變化,python3只接受帶括號的
    1)raise IOError,"file error"        #出現語法錯誤
    2)raise IOError("file error")
"""

#11、面向對象
"""
1、需要單獨深入學習
"""

#12、模塊的變動

 


免責聲明!

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



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