在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 sysdef 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 a
與print(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支...