python2與python3的print及字符串格式化小結

最近一直在用python寫程序,對於python的print一直很惱火,老是不按照預期輸出。今天特來總結一樣print和format,也希望能幫助大家徹底理解它們

最近一直在用python寫程序,對於python的print一直很惱火,老是不按照預期輸出。在python2中print是一種輸出語句,和if語句,while語句一樣的東西,在python3中爲了填補python2的各種坑,將print變爲函數,因此導致python3中print的一些使用和python2很不一樣。同時,python3大改python2中的字符串格式化,主推format()函數格式,用法很是靈活,讓老用戶一時摸不着頭腦。今天特來總結一樣print和format,也希望能幫助大家徹底理解它們。

1.print使用說明

在python2中print是這樣的:

在python3中print是以函數形式出現的:

可以很明顯的看出python3已經不支持print非函數格式了,在python3中使用print,必須加()。

我們在python3中help(print):  (注意,在python2中是不能help(print)的,因爲其不是一個函數)

可以清楚看到print函數的幾個參數,file是文件描述符,flush控制是否沖刷緩衝區,end爲結束字符,默認爲換行,sep是輸出的幾個變量間的字符,默認爲空格。弄清楚這些,以後操作起來就順溜了。

試試看:

上面是python3,可以看到改變end爲空字符就能避免換行,下面是python2,奇怪的是說好的不換行還是換了。。。

誰能告訴我怎麼打出a不換行啊。。。

總結一下,感覺python3還是非常優秀的,比python2上了一個檔次,更加方便開發者了,與python2中異常醜陋的print >> file相比,print的函數化確實更上一層樓。print也就這樣啦,下面來看看字符串格式化把。

2. 字符串格式

在python2中一直使用形如: “%s ....  %d” % (str, ... , intNum)格式化字符串的。這是python從C系列借鑑過來的語法,但是這種語法對於C這種靜態語言足夠快足夠好,但是對於擁有很多先進數據結構的python來說就有點心有餘來力不足了。爲什麼這麼說呢?python的幾把利刃:元組,列表,字典,集合等不適合用這種結構表示,這些利刃大多元素用下標表示,在這種結構中寫出來很醜陋,不信你試試。

不管怎麼樣,這種表示方法還是必須掌握的,大多數情況下表示起來還是特別快速的。

字符串格式化代碼:

看着這麼的多格式,其實常用的也就那麼幾個,總結一些只需要記住: %d, %s, %f就OK了,其實等需要用的時候查找就可以了,畢竟我們大腦的資源是很寶貴的,可不能全用來記這些死板的東西

再來看看《Python基礎編程》中對格式化輸出的總結:

(1). %字符:標記轉換說明符的開始

(2). 轉換標誌:-表示左對齊;+表示在轉換值之前要加上正負號;“”(空白字符)表示正數之前保留空格;0表示轉換值若位數不夠則用0填充

(3). 最小字段寬度:轉換後的字符串至少應該具有該值指定的寬度。如果是*,則寬度會從值元組中讀出。

(4). 點(.)後跟精度值:如果轉換的是實數,精度值就表示出現在小數點後的位數。如果轉換的是字符串,那麼該數字就表示最大字段寬度。如果是*,那麼精度將從元組中讀出。

下面來看看python3主打的格式化函數format().

字符串的format函數可以通過以下幾個方式靈活的完成字符串格式化:

1. 通過位置標號

{0}表示第一個元素, {1}表示第二個元素, {2}表示第三個元素,以此類推。。。

注意在這裏的順序是按照format中的參數順序而言的,在字符串中{0},{1}位置隨便。

2.通過關鍵字參數

3.通過屬性和下標

但是不知道字典怎麼回事,和正常的鍵值索引不一樣,貌似字符串不需要加引號,加引號反而出錯了。。。

各位可以自己試一下。當鍵值爲整數的時候可以順利輸出,鍵值爲字符串時不需要加‘'。

4.格式化限定符

{0:0.2f} {1:3d},在序號後面加上格式符就可以了,不用加%哦。

5.填充與對齊(更加方便的語法,雖然用到的比較少)

填充常跟對齊一起使用
^、<、>分別是居中、左對齊、右對齊,後面帶寬度
:號後面帶填充的字符,只能是一個字符,不指定的話默認是用空格填充

是不是很方便,注意<>^號後面加寬度哦。

好啦,print和格式化的用法基本講完了。大家掌握的怎麼樣啦下面還沒完,略微吐槽一下python中矩陣的輸出。。。

在python2.7.6中矩陣輸出:

在python3.4中還是不能正常輸出,總是錯位。。。

因爲現在python主打大數據領域,所以特別希望python未來能特別爲矩陣輸出優化一下。

總結

以上所述是小編給大家介紹的python2與python3的print及字符串格式化小結,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對神馬文庫網站的支持!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章