python print 函式與print語句區別

2021-08-03 16:34:41 字數 2391 閱讀 5841

在python 2中,print語句最簡單的使用形式就是print a,這相當於執行了sys.stdout.write(str(a) + '\n')。如果你以逗號為分隔符,傳遞額外的引數(argument),這些引數會被傳遞至str()函式,最終列印時每個引數之間會空一格。例如,print a, b, c相當於sys.stdout.write(' '.join(map(str, [a, b, c])) + '\n')。如果print語句的最後再加上乙個逗號,那麼就不會再新增斷行符(\n),也就是說:print a相當於sys.stdout.write(str(a))

從 2.0版本開始,python引入了print >>的語法,作用是重定向print語句最終輸出字串的檔案。例如,print >> output, a相當於output.write(str(a) + '\n')

如果用python來實現print函式,它的函式定義應該是這樣的:

import sys

def print(*objects, sep=none, end=none, file=none, flush=false): """a python translation of the c code for builtins.print(). """ if sep is none: sep = ' ' if end is none: end = '\n' if file is none: file = sys.stdout file.write(sep.join(map(str, objects)) + end) if flush: file.flush()

從上面的**中,我們可以發現:python 3中的print函式實現了print語句的所有特性。

print a == print(a)

print a, b, c == print(a, b, c)

print a, == print(a, end='')

print >> output, a == print(a, file=output)

從上面的示例**中我們就可以看出,使用print函式有明顯的好處:與使用print語句相比,我們現在能夠指定其他的分隔符(separator)和結束符(end string)。

將print變成函式的真正巧妙之處在與靈活性,但這點並不容易被人發覺。print成為函式之後,給python使用者和python開發團隊帶來了很大的靈活性。對於使用者來說,這可以讓你把print當作表示式(expression)使用;相比之下,print語句就只能作為語句使用。舉個例子,假設你想在每一行後面列印乙個省略號(ellipsis),表示這行尚未結束。使用print語句的話,你有兩種選擇:

# 手動實現 ...

print a, '...'

# 可復用的實現(這種方式也適用於print函式) ...

def ellipsis_print(*args):

for arg in args:

print arg, '',

print '...'

但是在python 3中,你可以選擇更好的解決方式:

# 手動實現 ...

print(a, end='...\n') # 多個可復用的解決方案,利用print語句無法實現... ellipsis_print = lambda *args, **kwargs: print(*args, **kwargs, end='...\n') # 或者 ... import functools ellipsis_print = functools.partial(print, end='...\n')

對於python開發團隊來說,他們不必再從語法層面來實現print的相關功能了。例如,如果你想讓print語句也一樣可以靈活地支援指定分隔符,你要怎樣去實現呢?這會是乙個相當難解決的設計難題。但是如果print變成了函式,只需要新增乙個引數就解決了。在python中,函式可以接受任意數量的引數,這比從底層實現語法帶來的靈活性要大的多。

我們還要注意,語法實現應該僅限於那些非這樣做不可的功能,或者是以語法形式實現後,大幅提高了可讀性的功能。在print這個案例中,print aprint(a)之間的區別可以忽略不計,因此並沒有影響可讀性。而且,由於我們能夠完全將print語句替換為函式,對於python語言的功能性也沒有損失。這就是為什麼將print變成函式的原因。

python print函式講解

在python中,print 函式是最常見的乙個函式,常常用於資料的額輸出。需要注意的是 print 在 python3.x 版本中是乙個內建函式,但在 python2.x 版本則不是乙個函式,只是乙個關鍵字。1.函式語法 print objects,sep end n file sys.stdou...

Python print函式詳解

1 2 print 3 print value,sep end n file sys.stdout,flush false 4 5 prints the values to a stream,or to sys.stdout by default.6 optional keyword argumen...

python print()函式使用總結

print 功能 輸出字串和數字 輸出字串 print runoob 輸出數字 print 100 輸出變數 str runboo print str 輸出列表 l 1,2,l print l 另外print 還可以輸出元組和字典,與列表一樣,在這就不做重複的描述 2.格式化輸出整數 python支...