3.從print到I/O
為何對雙引號念念不忘?
>>> print("hello, world!") hello, world!
平x而論,既然在意雙引號的去掉,為何不在意括號的去掉?甚至是print的去掉?前面說過,python程式就是一堆指令的集合,print()就是試圖向計算機傳遞的指令,而print("hello, world!")這整個程式就是試圖讓計算機列印"hello, world!"的指令,所以當計算機最後顯示列印結果時只關注print()指令中的資料,因此,螢幕顯示就沒有顯示出print(),同理,更進一步,在將字串轉化成影象方陣顯示在螢幕的時候,把字串標識(雙引號或單引號)也隱去掉了!
print是I/O的一種方法
1. print
print只是python程式輸出方法的一種,輸出使用者容易看懂的形式,而省掉其中相當多的細節,可以說是抽象化以及人性化吧。實際上,從程式執行到在螢幕上顯示,經過一系列的過程。計算機確實厲害。其實輸入輸出(I/O)是計算機的一個子系統,使計算機和外界可以相互間通訊,輸出系統負責將計算機的處理結果輸出到計算機外部,輸入系統負責從計算機外部接收輸入資料和程式,I/O裝置:鍵盤、滑鼠、顯示器、磁碟。
2. 表示式
>>> 1+1 2 >>> 2*2 4 >>> 1+2*3 7 >>>
由表示式輸出只顯示出來只有在互動式直譯器內才有效,而作為指令碼執行是不會打印出來的。
3. input()
>>> x=input('x:') x:1 >>> x '1' >>> type(x) <class 'str'> >>> x=int(x) >>> x 1 >>> type(x) <class 'int'>
input() 函式用一個字串作為其引數,然後顯示給使用者。然後等待使用者鍵入一些東西,按返回鍵。一旦使用者鍵入,input() 函式就返回該文字。
4. 檔案file
要建立一個檔案,需要藉助於open函式,
>>> f=open(r'test.txt','w') >>> f.write("hello, world!") 13 >>> f.close()# 記得要關閉檔案才會寫入,否則一直在記憶體中儲存 >>> import json >>> mydict={3:'I/o'} >>> with open(r'test.txt', 'a', encoding='utf-8') as f:# 'a'追加方式寫入,否則原來的hello world將刪除 f.write(json.dumps(mydict,ensure_ascii=False)+'\n')# ensure_ascii=False,為了輸出中文 13# 返回長度 >>>
此時,預設路徑下已經建立了test.txt檔案,並寫入了"hello, world!"。還有很多方法,以後再寫。至於最後檔案中的追加內容是這樣的{"3": "I/o"},因為json中的鍵值一定要用雙引號括起。json.dumps()方法將python資料結構轉化為json資料結構,將字典轉化為字串,寫入檔案中。另外json.loads()則將json資料轉化為python資料結構,將字串轉化為字典。其中自省不再贅述。json.dump()和json.load()主要用來讀寫json檔案。
對於程式設計I/O,流是一個會涉及並很常見的概念,這裡先挖個坑,日後再填。