1. 使用pywinauto自動化架構實現切換程式。
import win32com.clientfrom pywinauto import Applicationfrom time import sleep, timeapps = {'iexplore':'IEFrame', 'notepad':'Notepad'}lst = []for key:value in apps.items(): key = key + '_' key = Application.Connect(class_name = value) lst.append(key[value]) #print key #print key(value)for i in range(2): for obj in lst: obj.TypeKeys("{TAB}") sleep(.8)
2. python中當使用自身時:__name__ == __main__
被調用時:__name__ == 檔案名稱(不含尾碼名)
3. python多重賦值時先把右邊都算出後再進行賦值。
4. python中的for迴圈可以帶一個else子句,當迴圈正常結束時執行其內容,但如果是用break語句跳出的則不執行其內容。如下程式輸出了10以內的素數。
for n in range(2, 10): for x in range(2, n): if n % x == 0: print n, 'equals', x, 'x', n/x else: print n, 'is a prime number'
輸出結果為:
>>> 2 is a prime number3 is a prime number4 equals 2 x 24 is a prime number5 is a prime number6 equals 2 x 36 equals 3 x 26 is a prime number7 is a prime number8 equals 2 x 48 equals 4 x 28 is a prime number9 equals 3 x 39 is a prime number>>>
5. ''' ''' 包含起來的為docstring。可以用print列印出來。如下。
def M(): '''test docstring''' returnprint M.__doc__
輸出結果為:
>>> test docstring>>>
6. python函數若形參表中有一個形為**name的形參,在調用時這個形參可以接收一個字典,字典中包含所有不與任何形參匹配的關鍵字參數,形參表中還可以使用一個特殊的形為*name的形參,它將接受所有不能匹配的位置參數組成的一個序表,*name只能在**name前出現(*name類似於*args,**name類似於**kw),在任意個數形參前可以由0到多個正常的參數。
7. Lambda語句被用來建立新的函數對象,並且在運行時返回它們。如下。
def make_repeater(n): return lambda s:s*ntwice = make_repeater(2)print twice('word')print twice(5)>>> wordword10>>>
這裡使用了make_repeater函數在運行時建立新的函數對象,並且返回它。lambda語句用來建立函數對象,本質上,lambda需要一個參數,後面僅跟單個運算式作為函數體,而運算式的值被這個建立的函數返回。
注意:即使是print語句也不能用在lambda形式中,只能使用運算式。
8. 列表 list []
序表 tuple
元組 () ->一旦產生,不可改變
字典 {}
python中不同類型的對象比較目前也是合法的,結果是確定的但是沒有什麼意義,不同類型是按類型的名字排序的,所以,列表(list)總是小於字串(string),字串總是小於序表(tuple),等等。但是程式中不能依賴這樣的比較規則,語言實現可能會改變,不同的數實值型別可以按數值來比較,所以0等於0.0,等等。
9. 使用"from 包 import 項"這樣的格式時,匯入的項可以是包的一個子模組(或子包),也可以是包內定義的其它名字如函數、類、變數。匯入語句首先尋找包內是否定義了所需的項,如果沒有則假定它是一個模組然後調入,如果找不到,結果引發ImportError。
相反的,當使用"import item.subitem.subsubitem"這樣的格式時,除最後一項可以是包也可以是模組,不允許是前面一項內部定義的類、函數或變數。
10. pickle是儲存python對象並被其它程式或同一程式以後再運行時調用的標準方法,這種做法的專用術語叫做“持久對象”。
11. python中標準例外名是內建的標識符(不是保留關鍵字)。
12. python中try (raise) except finally與C#中try (throw) catch finally有區別。
python中finally子句不論try子句是否發生例外都會執行,例外發生時,先執行finally子句然後重新拋出該例外,當try語句用break或return語句退出時也將執行finally子句。
要注意的是,try語句不能同時擁有except子句和finally子句,需要的話可以嵌套。
13. python中的小錯誤:匯出類和基類取相同的名字就可以使用基類的私人變數。