天天看點

标準庫舉例:sys、copysyscopy

引言:python标準庫内容非常多,有人專門為此寫過一本書。本文将選擇幾個呈現出來,一來顯示标準庫之強大功能,二來示範如何了解和使用标準庫。sys是常用的标準庫,已經不陌生了;copy也是已經用過的标準庫。先從熟悉的入手,容易了解,這也是“殺熟”。 本文選自《跟老齊學python:輕松入門》。

  這是一個跟python解釋器關系密切的标準庫,前面已經使用過:sys.path.append()。

标準庫舉例:sys、copysyscopy

  顯示了sys的基本文檔,第一句話概括了本子產品的基本特點。

  在諸多sys函數和屬性中,下面選擇常用的來說明。

  sys.argv是專門用來向python解釋器傳遞參數的,是以稱為“指令行參數”。

  先解釋什麼是指令行參數。

标準庫舉例:sys、copysyscopy

  這裡的--version就是指令行參數。如果使用python –help,則可以看到更多:

标準庫舉例:sys、copysyscopy

  這裡隻顯示了部分内容,所看到的如-b、-h都是參數,比如python -h,其功能同上。是以,-h也是指令行參數。

  sys.arg的作用就是通過它向解釋器傳遞指令行參數。比如:

标準庫舉例:sys、copysyscopy

  将上述代碼儲存,檔案名是22101.py。然後如此操作:

标準庫舉例:sys、copysyscopy

  将結果和前面的代碼做個對比。

在$ python sys_file.py中,“sys_file.py”是要運作的檔案名,同時也是指令行參數,是前面的python這個指令的參數,其地位與python-h中的參數-h是等同的。

sys.argv[0]是第一個參數,就是上面提到的sys_file.py,即檔案名。

如果這樣來試試:

标準庫舉例:sys、copysyscopy

  在這裡用sys.argv [1]得到的就是beginner,依次類推。

  這個方法的作用是退出目前程式。

标準庫舉例:sys、copysyscopy

  從文檔資訊中可知,如果用sys.exit()退出程式,就會傳回systemexit異常。這裡先告知讀者,還有另外一種退出方式,即os._exit(),這兩者有所差別。

标準庫舉例:sys、copysyscopy

  這段程式的運作結果如下:

标準庫舉例:sys、copysyscopy

  在大多數函數中會用到return,其含義是終止目前的函數,并向調用函數的位置傳回相應值(如果沒有就傳回none)。但是sys.exit()的含義是退出目前程式(不僅僅是退出目前函數),并發起systemexit異常。這就是兩者的差別。

  如果使用sys.exit(0)表示正常退出,則需要在退出的時候有一個對人友好的提示,可以用sys.exit("i wet out at here."),那麼字元串資訊就會被列印出來。

  sys.path已經不陌生了,它可以查找子產品所在的目錄,以清單的形式顯示出來。如果用append()方法,就能夠向這個清單增加新的子產品目錄,如前所示範,不再贅述。

  前面對淺拷貝和深拷貝做了研究,這裡再次提出,溫故而知新。

标準庫舉例:sys、copysyscopy

  這個子產品中常用的就是copy和deepcopy。

  為了具體說明,看這樣一個例子,這個例子跟以前讨論淺拷貝和深拷貝時略有不同,請讀者認真推敲結果,并對照代碼。

标準庫舉例:sys、copysyscopy

  一切盡在不言中,請讀者認真對照上面的顯示結果,體會深拷貝和淺拷貝的實作方法和含義。

                    

标準庫舉例:sys、copysyscopy

  想及時獲得更多精彩文章,可在微信中搜尋“博文視點”或者掃描下方二維碼并關注。

                       

标準庫舉例:sys、copysyscopy