標籤:python
模組
Python有他有非常豐富的標準庫和第三方庫。使用前要先用import命令匯入,然後才能在之後的代碼中調用。
sys 模組
import sysprint(sys.path) # 列印環境變數
結果輸出的是一串目錄列表,是python啟動並執行環境變數。Python匯入的時候會依次在這些目錄中尋找。
不過其中並沒有sys.py這個檔案。搜尋了一下,sys模組對外沒有.py檔案,它是內建於解譯器中的,並且是用C語言寫的。
sys模組的一個重要的用法
import sysprint(sys.argv)
需要在系統中,在檔案名稱後帶上參數執行。
$ python test.py 123 abc
會依次輸出執行檔案的目錄,然後是執行時的所有參數(字串),如下
[‘test.py‘, ‘123‘, ‘abc‘]
os 模組
import osa = os.system("dir") # 調用系統命令print("-->\n",a)
這裡以Windows系統中的dir命令為例。執行後輸出了執行結果,不過變數a中的內容只有0,表示命令執行成功。如果命令執行錯誤,結果會是1。
如果需要將命令執行的結果儲存到變數中,需要這樣:
import osa = os.popen("dir").read()print("-->\n",a)
os.system只是執行命令,將執行結果儲存,僅僅只在螢幕輸出反饋,沒有記錄,所以我們也無法根於反饋資訊做任何處理。
os.popen是將執行的反饋都儲存下來了,但是並不能直接輸出,輸出的應該是記憶體位址。上面還用了read方法才將裡面的內容取了出來。
os.mkdir("目錄名")還可以建立目錄
最後,自己寫的代碼儲存為py檔案後,也可以在別的地方使用import匯入。注意放到環境變數的目錄中,或者修改環境變數(這個沒講)。可以放到和執行檔案同一個目錄中,執行檔案的目錄也在環境變數中。
資料類型
數字和字串沒太大問題。數字中的複數a+bj。python裡用的是j,以前學校裡學的時候用的是i。好吧,關於複數基本都忘記光了,貌似也想不到什麼需要應用到的情境。
負數的平方根也忘記有什麼用了。而且math模組也不支援複數。要支援複數的計算需要cmath模組。具體就不試了。
資料運算
簡單的就略過了
成員運算
in 和 not in。是否在指定的序列中。
a = [1,2,3,4]print(1 in a)print(5 in a)print(1 not in a)print(5 not in a)
身份運算
is 和 is not。是否是相同的對象。一般用來判斷資料類型。
a = [1,2,3,4]b = "hello"print(type(a))print(type(a) is list)print(type(a) is str)print(type(b))print(type(b) is not list)print(type(b) is not str)
位元運算
&,|,^,~,<<,>>。這些。主要是二進位的計算。算IP地址的時候應該會用到。
a = 3 # 0b11print(~a&0xff) # 限制在255(0xff)之內取反
0000 0000 0000 0011 取反是 [1]111 1111 1111 1100 第一個是符號位,所以直接取反是負數。這裡&0xff後把高位的負號(第一個1)和其他1都變成了0,結果就是0000 0000 1111 1100即252。算掩碼的時候應該能用。
三元運算
先補一下if的簡寫。如果判斷條件之後只跟一句可以簡寫在一行裡。
if True: print("Hello")
用三元運算賦值或運算
a = 1 if True else 2b = 3 if False else 4print(a,b)
print("a") if True else print("b")print(1) if False else print(2)
試了一下使用邏輯運算and和or也能實現,不過不推薦。像下面這種情況Null 字元串會被判定為False,而不是我們想要得到的Null 字元串。
a = "" if True else "你看不見我a"b = "" and True or "你看不見我b"c = True and "" or "你看不見我c"print("a",a)print("b",b)print("c",c)
所以使用官方提供的三元運算還是有道理的。另外試了一下,還可以一直嵌套下去
print(‘a‘) if 1 else print(‘b‘) if 1 else print(‘c‘)print(‘a‘) if 0 else print(‘b‘) if 1 else print(‘c‘)print(‘a‘) if 0 else print(‘b‘) if 0 else print(‘c‘)print(‘a‘) if 0 else print(‘b‘) if 0 else print(‘c‘) if 0 else print(‘d‘)
位元據bytes
pathon3裡將字串和二進位類型區分開了。現在無法混用,只能做類型轉換。
本來通過網路傳輸文本的時候可以直接傳字串,現在必須要先將字串轉成二進位之後才能傳。
資料類型的轉換使用encode 和 decode。
msg = "749B=騎士救兵"a = msg.encode("utf-8") # 預設utf-8,所以可以省略,但是建議還是都加上print(a)code = b‘\xe6\x9d\xa5\xe7\x8e\xa9\xe9\xad\x94\xe7\x8e\x8b\xe7\x9a\x84\xe5\x92\x9a\xef\xbc\x81‘b = code.decode("utf-8")print(b)
作業
學完這個模組的作業
編寫登陸介面
輸入使用者名稱密碼
認證成功後顯示歡迎資訊
輸錯三次後鎖定
多級菜單
三級菜單
可依次選擇進入各子功能表
所需新知識點:列表、字典
Python自動化開發學習2