Python自動化開發學習2
模塊
Python有他有非常豐富的標準庫和第三方庫。使用前要先用import命令導入,然後才能在之後的代碼中調用。
sys 模塊
import sys print(sys.path) # 打印環境變量
結果輸出的是一串目錄列表,是python運行的環境變量。Python導入的時候會依次在這些目錄中查找。
不過其中並沒有sys.py這個文件。搜索了一下,sys模塊對外沒有.py文件,它是內置於解釋器中的,並且是用C語言寫的。
sys模塊的一個重要的用法
import sys print(sys.argv)
需要在系統中,在文件名後帶上參數執行。
$ python test.py 123 abc
會依次輸出執行文件的目錄,然後是執行時的所有參數(字符串),如下
[‘test.py‘, ‘123‘, ‘abc‘]
os 模塊
import os a = os.system("dir") # 調用系統命令 print("-->\n",a)
這裏以Windows系統中的dir命令為例。執行後輸出了執行結果,不過變量a中的內容只有0,表示命令執行成功。如果命令執行錯誤,結果會是1。
如果需要將命令執行的結果保存到變量中,需要這樣:
import os a = 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 # 0b11 print(~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 2 b = 3 if False else 4 print(a,b)
print("a") if True else print("b") print(1) if False else print(2)
試了一下使用邏輯運算and和or也能實現,不過不推薦。像下面這種情況空字符串會被判定為False,而不是我們想要得到的空字符串。
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