最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python-sys.stdout作為默認(rèn)函數(shù)參數(shù)的實(shí)現(xiàn)

 更新時(shí)間:2020年02月21日 16:34:06   作者:codeday  
今天小編就為大家分享一篇 python-sys.stdout作為默認(rèn)函數(shù)參數(shù)的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

假設(shè)我們有以下虛擬函數(shù):

import sys

def writeline(text, stream=sys.stdout):
 stream.write(text + '
')

with open('/path/to/file', 'w') as f:
 # writes to /path/to/file
 writeline('foo', f)

# writes to standard output
writeline('bar')

鑒于Python在定義時(shí)評(píng)估了函數(shù)的默認(rèn)參數(shù),將sys.stdout設(shè)置為默認(rèn)參數(shù)是安全的,還是會(huì)產(chǎn)生意想不到的副作用?

最佳答案

我想到的一個(gè)問題是,您有時(shí)有時(shí)想自己將sys.stdout重定向到文件(或管道,設(shè)備等).

例如,您的主程序可能如下所示:

if __name__ == '__main__':
 if len(sys.argv) > 1:
  sys.stdout = open(sys.argv[1],'w')
 try:
  # ... run the program
 finally:
  if len(sys.argv) > 1:
   sys.stdout.close()

如果您希望程序在提及一個(gè)文件時(shí)將其記錄到一個(gè)文件中(例如python3 file.py logfile.log),這可能會(huì)很有用.現(xiàn)在,由于您設(shè)置了sys.stdout,因此您的writeline方法將不會(huì)注意到該修改.

因此,我認(rèn)為寫這樣更安全:

def writeline(text, stream = None):
 if stream is None:
  stream = sys.stdout
 stream.write(text + '
')

通常,最好將不可變對(duì)象設(shè)置為默認(rèn)參數(shù)(例如None,False,(1)等).只有在極少數(shù)情況下,Python中才會(huì)使用不可變的變量(或可能更改引用的變量).

但是,如果您確定不會(huì)將sys.stdout重定向到文件,管道等,則是安全的.

補(bǔ)充拓展:Python 實(shí)現(xiàn)將sys.stdout還原為默認(rèn)值

我想將輸出寫入文件,因此我做了

sys.stdout = open(outfile, 'w+')

但是后來我想在寫入文件后打印回控制臺(tái)

sys.stdout.close()
sys.stdout = None

我得到了

AttributeError: 'NoneType' object has no attribute 'write'

顯然默認(rèn)輸出流不能None,所以我對(duì)Python說:

sys.stdout = use_the_default_one()

解決方案

重新分配給sys.__stdout__。

來自文檔

在程序開始時(shí)包含stdin,stderr和stdout的原始值。它們?cè)谕瓿蛇^程中使用,并且無論是否已重定向sys.std *對(duì)象,將其打印到實(shí)際的標(biāo)準(zhǔn)流都很有用。

或者你可以做

print(output, file=myoutputfile)

并避免該問題。

以上這篇 python-sys.stdout作為默認(rèn)函數(shù)參數(shù)的實(shí)現(xiàn)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Django文件存儲(chǔ) 默認(rèn)存儲(chǔ)系統(tǒng)解析

    Django文件存儲(chǔ) 默認(rèn)存儲(chǔ)系統(tǒng)解析

    這篇文章主要介紹了Django文件存儲(chǔ) 默認(rèn)存儲(chǔ)系統(tǒng)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python中sklearn的pipeline模塊實(shí)例詳解

    python中sklearn的pipeline模塊實(shí)例詳解

    這篇文章主要介紹了python中sklearn的pipeline模塊的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python實(shí)現(xiàn)監(jiān)聽目錄并取消文件只讀屬性

    Python實(shí)現(xiàn)監(jiān)聽目錄并取消文件只讀屬性

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)監(jiān)聽目錄并取消文件只讀屬性,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-07-07
  • 使用Pandas的Series方法繪制圖像教程

    使用Pandas的Series方法繪制圖像教程

    今天小編就為大家分享一篇使用Pandas的Series方法繪制圖像教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 使用Python防止SQL注入攻擊的實(shí)現(xiàn)示例

    使用Python防止SQL注入攻擊的實(shí)現(xiàn)示例

    這篇文章主要介紹了使用Python防止SQL注入攻擊的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • python列表返回重復(fù)數(shù)據(jù)的下標(biāo)

    python列表返回重復(fù)數(shù)據(jù)的下標(biāo)

    這篇文章主要介紹了python列表返回重復(fù)數(shù)據(jù)的下標(biāo),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python調(diào)用PC攝像頭實(shí)現(xiàn)掃描二維碼

    Python調(diào)用PC攝像頭實(shí)現(xiàn)掃描二維碼

    PC攝像機(jī)掃描二維碼的應(yīng)用場景很廣泛,可以應(yīng)用于各種需要快速掃描、識(shí)別和管理的場景,本文就來具體講講如何用Python實(shí)現(xiàn)這一功能吧
    2023-05-05
  • pandas 數(shù)據(jù)索引與選取的實(shí)現(xiàn)方法

    pandas 數(shù)據(jù)索引與選取的實(shí)現(xiàn)方法

    這篇文章主要介紹了pandas 數(shù)據(jù)索引與選取的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • python爬蟲之urllib,偽裝,超時(shí)設(shè)置,異常處理的方法

    python爬蟲之urllib,偽裝,超時(shí)設(shè)置,異常處理的方法

    今天小編就為大家分享一篇python爬蟲之urllib,偽裝,超時(shí)設(shè)置,異常處理的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python如何通過protobuf實(shí)現(xiàn)rpc

    python如何通過protobuf實(shí)現(xiàn)rpc

    這篇文章主要為大家詳細(xì)介紹了python通過protobuf實(shí)現(xiàn)rpc的方法,感興趣的朋友可以參考一下
    2016-03-03

最新評(píng)論

兴城市| 天柱县| 凤冈县| 公主岭市| 云浮市| 彩票| 潞西市| 丰台区| 浪卡子县| 甘孜县| 新源县| 江北区| 台州市| 漳州市| 淮阳县| 康乐县| 浮山县| 丰镇市| 山阳县| 雅江县| 牡丹江市| 霍邱县| 灵丘县| 黄平县| 迁西县| 墨脱县| 新巴尔虎右旗| 顺平县| 武平县| 普洱| 日照市| 江陵县| 会东县| 台东县| 汝南县| 浦北县| 常山县| 淅川县| 璧山县| 巴塘县| 前郭尔|