淺析 python中的 print 和 input 的底層區別!!!

近期的項目中 涉及到相關知識 就來總結一下 !

先看源碼:python

def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
    """
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
    
    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.
    """

# 附帶翻譯哦!
將值打印到溪流或系統中。默認stdout。
可選關鍵字參數:
文件:相似文件的對象(流);默認爲當前的systdout。
sep:在值之間插入字符串,默認空格。
結束:在最後一個值以後附加的字符串,默認換行。
python 源碼

 

print()用sys.stdout.write() 實現 app

import sys
 
print('hello')
sys.stdout.write('hello')
print('new')
 
 
# 結果:
# hello
# hellonew

sys.stdout.write()結尾沒有換行,而print()是自動換行的。另外,write()只接收字符串格式的參數。ide

print()能接收多個參數輸出,write()只能接收一個參數。spa

input ()翻譯

先看源碼!code

    Read a string from standard input.  The trailing newline is stripped.
    
    The prompt string, if given, is printed to standard output without a
    trailing newline before reading input.
    
    If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
    On *nix systems, readline is used if available.

附帶 翻譯 

從標準輸入中讀取一個字符串 a 。後面的新線被剝掉了。
若是給定的話,提示字符串會被打印到標準輸出,而不須要a
在閱讀輸入以前,跟蹤新行。
若是用戶點擊了EOF(nix:Ctrl-D,Windows:Ctrl-Z+Return),就會產生EOFError。
在nix系統上,若是可用,則使用readline。

input 用 sys.stdin.readline() 實現對象

import sys
 
a = sys.stdin.readline()
print(a, len(a))
 
b = input()
print(b, len(b))
 
 
# 結果:
# hello
# hello
#  6
# hello
# hello 5

readline()會把結尾的換行符也算進去。blog

readline()能夠給定整型參數,表示獲取從當前位置開始的幾位內容。當給定值小於0時,一直獲取這一行結束。ip

import sys
 
a = sys.stdin.readline(3)
print(a, len(a))
 
 
# 結果:
# hello
# hel 3

readline()若是給定了整型參數結果又沒有把這一行讀完,那下一次readline()會從上一次結束的地方繼續讀,和讀文件是同樣的。ci

import sys
 
a = sys.stdin.readline(3)
print(a, len(a))
 
b = sys.stdin.readline(3)
print(b, len(b))
 
# 結果
# abcde
# abc 3
# de
#  3

 

input()能夠接收字符串參數做爲輸入提示,readline()沒有這個功能。

相關文章
相關標籤/搜索