print從語句改成函數(shù)(Python3.0)

自Python3.0起,Python中的print關(guān)鍵字被移除,想要便捷地打印字符串,可以使用print()函數(shù)。

雖然Python2.7支持了print()函數(shù),但是卻沒有移除print關(guān)鍵字,因此直接type(print)是會報錯的。

In [1]: type(print)
 File "<ipython-input-1-961b0c77d407>", line 1
   type(print)
            ^
SyntaxError: invalid syntax

print關(guān)鍵字和函數(shù)的使用對比

打印一個對象

關(guān)鍵字版本:

print x

函數(shù)版本:

print(x)
打印多個對象

關(guān)鍵字版本:

print x, y, z

函數(shù)版本:

print(x, y, z)
設(shè)置重定向

關(guān)鍵字版本:

print >> sys.stderr, "xxx"
with open("test.log", "w") as f:
    print >> f, "test line"

函數(shù)版本:

print(x, file=sys.stderr)
with open("test.log", "w") as f:
    print("test line", file=f)
設(shè)置分隔符

關(guān)鍵字版本:

print x, y  # 分隔符只能是單個空格

函數(shù)版本:

print(x, y, step=",")  # 通過step設(shè)置想要的分隔符,默認仍然是單個空格
設(shè)置結(jié)束符

關(guān)鍵字版本:

print x
print x,    # 結(jié)束符只能是單個空格或者換行符

函數(shù)版本:

print(x, end="\n")  #通過end設(shè)置想要的結(jié)束符 
設(shè)置刷新輸出流

關(guān)鍵字版本:

print x    # 因為只能以換行符結(jié)束,所以默認每次執(zhí)行print語句都刷新輸出流

函數(shù)版本:

print(x, flush=False)  #通過flush設(shè)置是否刷新輸出流,一旦輸出流中包含換行符就馬上刷新輸出流。需要注意默認的結(jié)束符是換行符,所以實際上默認也是直接刷新輸出流

利用print函數(shù)實現(xiàn)一個命令行動畫

print_load.py

import time

def load():
    for i in range(1, 101):
        print('{0:>3d}%  '.format(i)+'#'*i+'-'*(100-i), end='', flush=True)
        print('\x08'*106, end='')  # 這是顯示文本式動畫的訣竅所在:使用退格符(或者\r)把光標(biāo)移回來
        time.sleep(0.1)
    print(' ' * 106 + '\x08' * 106, end='')  # 使用空格清除狀態(tài)消息,把光標(biāo)移回開頭 

if __name__ == '__main__':
    load()

運行命令python3 print_load.py將會看到不斷加載進度的命令行動畫

print函數(shù)替換關(guān)鍵字的原因

這一切可以在2006年被提出的PEP3105中找到。

  • 打印功能是唯一一個使用關(guān)鍵字實現(xiàn)的應(yīng)用程序級別的功能。在Python的世界里,關(guān)鍵字通常是功能實現(xiàn)的最后的手段。
  • 使用print()可以實現(xiàn)更復(fù)雜的打印輸出格式(雖然format函數(shù)也提供格式化功能)。并且重定向文件時表示得更清晰易懂。
  • 相比關(guān)鍵字,函數(shù)的迭代更加方便,兼容性更佳。
  • print關(guān)鍵字的分隔符不能變換,這點極其不便。
  • print()以函數(shù)的形式呈現(xiàn),是一個概念上的巨大飛躍。這意味著我們可以輕易聯(lián)想到,將字符串輸出到sys.stdout或其他文件來理解它,工作流程類似于文件讀寫。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容