显示2位小数 python3_Python2和Python3的区别
python
Python2和Python3分別是Python的兩個版本,按照Python官方的計劃,Python2只支持到2020年。為了不帶入過多的累贅,Python3在設計的時候沒有考慮向下相容,許多針對早期Python版本設計的程序都無法在Python3上正常執行。
為了照顧現有程序,Python 2.6作為一個過渡版本,基本使用了Python 2.x的語法和庫,同時考慮了向Python 3.0的遷移,允許使用部分Python 3.0的語法與函數。新的Python程序建議使用Python3版本的語法,除非執行環境無法安裝Python3或者程序本身使用了不支援Python3的第三方庫。目前不支持Python3的第三方庫有Twisted, py2exe, PIL等。
Python2與Python3的具體區別如下:
1、print函數
1)在Python 2.6與Python2.7里面,以下三種形式是等價的:
print 'Hello world!'print ('Hello world!') # 注意print后面有個空格print('Hello world!') # print()不能帶有任何其它參數但在Python3中只能使用后兩者,print語句被Python3廢棄,只能使用print函數
2)Python 2.6的__future__中實際已經支持了新的print()語法
from __future__ import print_functionprint('Hello', 'world!', sep=' ')Python3中可以直接使用如下語句:
print('Hello', 'world!', sep=' ')2、Unicode
Python2中是ASCII編碼,需要更改字符集才能正常支持中文,所以在.py文件中會看到# -*- coding: utf-8 -*-
>>> str='夢想還是要有的'>>> str'xe6xa2xa6xe6x83xb3xe8xbfx98xe6x98xafxe8xa6x81xe6x9cx89xe7x9ax84'>>> str=u'夢想還是要有的'>>> stru'夢想還是要有的'Python3中字符串是Unicode (utf-8)編碼,支持中文做標識符
>>> str='夢想還是要有的'>>> str'夢想還是要有的'由于Python3源碼文件默認使用utf-8編碼,這就使得以下代碼是合法的:
>>> 夢想='dream'>>> 夢想'dream'3、除法運算
Python中的除法有兩個運算符,/和//
1)/除法
在Python2中/除法規則是整數相除的結果是一個整數,把小數部分完全忽略掉,浮點數除法會保留小數點的部分得到一個浮點數的結果。
>>> 1/20>>> 1.0/2.00.5在Python3中/除法不再這么做了,對于整數之間的相除,結果也會是浮點數。
>>> 1/20.5>>> 1.0/2.00.52)//除法
對于//除法,這種除法叫做floor除法,會對除法的結果自動進行一個floor操作,在Python2和Python3中是一致的。
4、異常處理
1)Python2中捕獲異常的語法為except exc, var,Python3中捕獲異常的語法為except exc as var,使用語法except (exc1, exc2) as var可以同時捕獲多種類別的異常。 Python 2.6已經支持這兩種語法。
2)在Python2時代,所有類型的對象都是可以被直接拋出的,在Python3時代,只有繼承自BaseException的對象才可以被拋出。
3)Python2中觸發異常可以用raise IOError, "file error"或raise IOError("file error")兩種方式,Python3中觸發異常只能用raise IOError("file error”)。
4)異常StandardError 被Python3廢棄,統一使用Exception
5)在Python2時代,異常在代碼中除了表示程序錯誤,還經常做一些普通控制結構應該做的事情,在Python3中可以看出,設計者讓異常變的更加專一,只有在錯誤發生的情況才能去用異常捕獲語句來處理。
5、xrange和range
1)Python3中不再使用xrange方法,只有range方法
2)range在Python2中返回列表,而在Python3中返回range可迭代對象
Python2:
>>> a=range(10)>>> print(a)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]Python3:
>>> a=range(10)>>> print(a)range(0, 10)>>> print(list(a))[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]6、八進制字面量表示
Python3中八進制數必須寫成0o777,原來的形式0777不能用了;二進制必須寫成0b111。
新增了一個bin()函數用于將一個整數轉換成二進制字串。 Python 2.6已經支持這兩種語法。
在Python3中,表示八進制字面量的方式只有一種,就是0o1000。
Python2:
>>> 0o1000512>>> 01000512Python3:
>>> 0o1000512>>> 01000 File "", line 1 01000 ^SyntaxError: invalid token7、不等運算符
Python2中不等于有兩種寫法 != 和 <>
Python3中去掉了<>, 只有!=一種寫法
8、去掉了repr表達式``
Python2中反引號``相當于repr函數的作用
Python3中去掉了``這種寫法,只允許使用repr函數
9、多個模塊被改名(根據PEP8)
模塊改名
StringIO模塊現在被合并到新的io模組內。 new, md5, gopherlib等模塊被刪除。 Python 2.6已經支援新的io模組。
httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib被合并到http包內。
取消了exec語句,只剩下exec()函數。 Python 2.6已經支持了exec()函數。
10、數據類型
1)在Python2中long是比int取值范圍更大的整數,Python3中取消了long類型,int的取值范圍擴大到之前的long類型范圍
2)新增了bytes類型,對應于Python2版本的八位串,定義一個bytes字面量的方法如下:
>>> b=b'china'>>> type(b)3)str 對象和 bytes 對象可以使用 .encode() (str -> bytes) 或 .decode() (bytes -> str)方法相互轉化
>>> s=b.decode()>>> s'china'>>> b1=s.encode()>>> b1b'china'4)dict的.keys()、.items 和.values()方法返回迭代器,只能通過循環取值,不能通過索引取值,而之前的iterkeys()等函數都被廢棄。同時去掉的還有 dict.has_key(),可以用 in來代替
dict={'a':1, 'b':2, 'c':3}for key in dict: print(key)print('c' in dict)11、input
在Python2中raw_input()和input( ),兩個函數都存在,其中區別為:
1)raw_input():將所有輸入作為字符串看待,返回字符串類型
2)input():只能接收"數字"的輸入,在對待純數字輸入時具有自己的特性,它返回所輸入的數字的類型(int, float )
在Python3中raw_input()和input( )進行了整合,去除了raw_input(),僅保留了input()函數,其接收任意任性輸入,將所有輸入默認為字符串處理,并返回字符串類型。
12、next()函數和.next()方法
my_generator = (letter for letter in 'abcdefg’)
Python2中可以用 next(my_generator) 和 my_generator.next() 兩種方式。
Python3中只能用 next(my_generator)這種方式。
13、列表推導
不再支持[n for n in a,b]語法,改為[n for n in (a,b)]或[n for n in [a,b]]
dict={'a':1, 'b':2, 'c':3}for key in dict: print(key)print('c' in dict)14、比較符
Python2 中任意兩個對象都可以比較,11 < 'test’返回True
Python3中只有同一數據類型的對象可以比較,11 < 'test'報錯,需要調用正則判斷
import re11 < int('test') if re.compile('^[0-9]+$').match('test') else 015、打開文件
Python2中使用file( ..... ) 或 open(.....)
Python3中只能使用open(.....)
16、包的定義
Python2:文件夾中必須有_ _ init _ _.py文件
Python3:不需要有_ _ init _ _.py文件
17、map / filter
Python2:返回列表,直接創建值,可以通過索引取值
Python3:返回迭代器,不直接創建值,通過循環,邊循環邊創建
總結
以上是生活随笔為你收集整理的显示2位小数 python3_Python2和Python3的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java compile_java中的C
- 下一篇: python 倒排索引 性能_pytho