1. 程式人生 > >Python自動化開發學習2

Python自動化開發學習2

python

模塊

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