3.從print到I/O

  • 2020 年 1 月 20 日
  • 筆記

為何對雙引號念念不忘?

>>> 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)勢必增加系統的開銷。輸入輸出(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'追加方式寫入          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文件。

>>> import json  >>> mydict={3:'I/o'}  >>> import json  >>> type(json.dumps(mydict))  <class 'str'>  >>> b=json.dumps(mydict)  >>> type(json.loads(b))  <class 'dict'>

  對於編程I/O,流是一個會涉及並很常見的概念,這裡先挖個坑,日後再填。