中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python的"print"函數在“Hello World”之外的延伸

發布時間:2020-05-12 01:09:53 來源:網絡 閱讀:503 作者:Python熱愛者 欄目:編程語言

想必任何一個人學習python的第一件事就是學習怎么去輸出字符串“hello world”,就像你期望的那樣,這段代碼是非常簡潔的: 確實,python的“print”函數用起來非常簡單直接以至于我們很少對它進行一些思考。我們猜測人們知道如何使用它——而且多數情況下,對于人們想要去做的事,這也是正確的。

Python的

但隱藏在“print”功能表面之下還有許多功能,以及一些歷史(甚至有點痛苦)。了解如何使用“打印”可以減少你編寫的代碼,而且通常也會讓它對于你來說更加容易使用。

原理

基本原理很簡單:“print”是一個函數,這意味著如果要調用它,需要使用括號:

Python的

您可以將任何類型的數據傳遞給“print”。字符串是最常見的,但也可以是int、float、list、tuples、dict、set或任何其他對象。例如:

Python的

?或者:

Python的

當然,這跟你要傳遞的參數是無關的,不論是對象字面量或是引用一個變量

Python的

你也可以將表達式放在括號內;表達式的值將傳遞給“print”:

Python的

在“print”顯示其輸出之后,它添加了一個新行。例如

Python的

您可以傳遞任意多的參數來“打印”,將參數用逗號分隔,每一個參數都會按照順序打印出來,參數中間會有一個空格:

Python的

下面我們將看到如何更改這兩個默認行為。

輸入和輸出

如果“print”是一個函數,那么他一定會有返回值,我們看:

Python的

換句話說:不管你打印的是什么,“print”都不會有返回值。畢竟你不是為了得到返回值而打印的,而是為了它的另一個作用。

那么“print”的實參呢?已經看到我們可以傳遞任意數量的實參,它們都會被打印出來。但是有一些可選的形參我們也是可以傳遞的。

改變輸出項之間的字符串顯示和改變放在輸出末尾的代碼,這兩點是聯系非常緊密的,他們可以讓我們自定義我們在前面看到的行為。

例如,參數“sep”,默認為“”(空格字符),被放在打印項之間。我們可以將其設置為任何字符串,包括多字符字符串:

Python的

請注意,“sep”放在“print”的參數之間,而不是參數的每個元素之間。因此,在第三個示例中,“**”位于列表之間,而不是列表的整數元素之間。

如果你想讓打印的參數一次相連,可以把“sep”設為空字符串:

Python的

類似的,參數“end”的默認值是“\n”(換行),但是可以包含任意字符串。他決定了在“print”結束之后打印什么。

例如,如果你想在你打印之后額外空幾行出來,就改一下“end”的值就會產生新行:

Python的

但是,反過來講如果你不想在輸出之后加新行,吧“end”的值設成空字符串就可以了:

Python的

注意,在python交互命令行中,使用空字符串打印內容意味著下一個“>>>”提示出現在所打印內容之后。畢竟,您并沒有要求在您所寫的內容之后有一個新行,而python遵從了您的請求。

當然,你可以傳遞根本不涉及換行的“end”值。例如,假設您希望將多個字段輸出到屏幕,每個字段打印在一行中:

Python的

默認情況下,“print”將其數據發送到標準輸出,在python中稱為“sys.stdout”。當“sys”模塊與python一起自動加載時,它的名稱不可用,除非你明確了“import sys”。

“print”函數允許您使用“file”參數指定要寫入的另一個類似文件的對象(即,遵循適當協議的對象)。對象必須是可寫的,除此之外,您可以使用任何對象。

例如:

Python的

在這種情況下,輸出被寫入一個文件。但我們也可以寫入一個Stringio對象,例如,它的行為類似于一個文件,但不是一個文件。

注意,如果我在上面的示例中沒有關閉“f”,輸出就不會到達文件中。這是因為默認情況下,python會緩沖所有輸出;每當寫入文件時,只有當緩沖區填滿(并刷新)時,顯式調用“flush”方法時,或關閉文件時(從而隱式刷新)才實際寫入數據。將“with”結構與文件對象一起使用就會關閉它,從而刷新緩沖區。

但是,還有另一種刷新輸出緩沖區的方法:我們可以將一個True值傳遞給“print”中的“flush”參數。在這種情況下,輸出會立即刷新到磁盤,然后寫入。這聽起來不錯,但請記住,緩沖的目的是減少磁盤和計算機I/O系統上的負載。所以需要的時候才能刷新,但不要一直這樣做——除非你是按小時付錢的,而且更慢些對你有好處。

下面是一個有或無沖洗的打印示例:

Python的

您可能注意到這里有一個小的不一致:“print”寫入文件,默認情況下為“sys.stdout”。如果我們不刷新或關閉文件,輸出將被緩沖。那么,當我們打印到屏幕上時,為什么不需要沖洗(或者關閉,這不是一個好主意)?

答案是“sys.stdout”是由python專門處理的。正如python文檔所說,它是“行緩沖的”,這意味著每次發送換行符(“\n”)時,都會刷新輸出。只要你把東西打印到“sys.stdout”就會以新行結尾——為什么不這樣做呢?——你不會注意到緩存。

還記得Python2嗎?

在我寫這篇文章的時候,是2019年1月,距離不再支持或維護python 2之前還有不到12個月的時間。這并沒有改變我的許多客戶仍在使用python 2的事實(因為重寫大型代碼庫既不可行也不值得)。如果您仍在使用python 2,那么應該嘗試轉移到python 3。

事實上,讓用戶從python 2到3的因素之一就是“打印”的不同。

首先,python2中的“print”是一個語句,而不是表達式。這意味著2中的括號是可選的,而3中的括號是強制的——當人們從2移動到3時,首先要學習的內容之一。

這也意味著在python2中“print”不能傳遞給其他函數。在Python3中是可以的。

python 2的“print”語句沒有可以處理的參數(或默認值)。你想打印到文件而不是“sys.stdout”?將其分配給“sys.stdout”以使用“print”——或者只使用文件的“write”方法寫入文件。你想讓“打印”在打印后降行?在行尾加一個逗號。(是的,這是真的;這很難看,但是管用。)

如果您正在使用python 2,并且想體驗一下python 3的打印功能,那該怎么辦?您可以將此行添加到代碼中:

from?__future__?import?print_function

一旦您這樣做了,python 3的“print”函數就會就位。

現在我知道python 3已經不是將來時了;實際上,您可以說python 2已經過時了。但對于許多想轉型或學習如何轉型的人來說,這是一個很好的方法。但是要當心:如果您有不帶括號的“打印”調用,或者是避免行換行的逗號,那么您需要做的不僅僅是這個導入。您需要檢查您的代碼,并確保它以這種方式工作。所以這看起來是一個明智的方法,是一個大的過渡階段你需要做的第一步,從2到3。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新密市| 新竹县| 玉环县| 南开区| 宁晋县| 江阴市| 桃源县| 眉山市| 馆陶县| 繁昌县| 砀山县| 荥阳市| 汪清县| 房产| 明星| 松桃| 会理县| 扬中市| 阜平县| 东兰县| 浦东新区| 南部县| 二连浩特市| 云林县| 龙口市| 子长县| 元朗区| 民权县| 衡阳市| 大化| 吉林市| 方城县| 当雄县| 富平县| 米泉市| 克什克腾旗| 大田县| 长丰县| 巴彦淖尔市| 龙岩市| 赤峰市|