1 導入模塊屢次和導入一次的效果是同樣的python
2 若但願模塊能像程序同樣被執行,可使用-m切換開關來執行,如python -m progname args (運行帶命令行參數args的progname程序)函數
3 模塊真正的用處在於它能夠保持本身的做用域spa
4 告知模塊自己是做爲程序運行仍是導入到其餘程序,須要使用__name__變量,被當作程序執行時,__name__的值是__main__,被導入時,值爲模塊的名字命令行
5 模塊存儲在文件中,包就是模塊所在的目錄,爲了讓python將目錄做爲包對待,目錄必須包含一個__init__.py的文件(模塊)code
6若將__init__.py做爲普通模塊導入的話,__init__.py模塊的內容就是包的內容。如constants包的__init__.py包括PI=3.14,那麼能夠像下面這樣作:import constants print constants.PI對象
7 很是重要的一個知識點,必定要記住blog
8 __all__繼承
__all__定義了模塊的公有接口接口
若模塊有__all__變量,則__all__表明from 模塊 import * 表明什麼含義內存
不在__all__變量中的函數沒法經過import *導入,如copy模塊中的dispatch_table 不在__all__中,要使用dispatch_table就要經過 from copy import dispatch_table 實現,或先導入copy,再copy.dispatch_table
若模塊沒有__all__,則import * 默認導入模塊中全部不如下劃線開頭的全局變量
9 想看函數的使用說明,能夠打印__doc__,如 print(range.__doc__)
10 找到源碼的位置:print copy.__file__
11 sys.argv列表中,腳本的名字爲sys.argv[0]
12 利用heapq能夠求出前N個最大最小值
import heapq lyst = [-3, 22, 45, 34, 99, 102, -44] low3 = heapq.nlargest(3, lyst) top3 = heapq.nsmallest(3, lyst)
13
爲了讓特殊字符表現得像普通字符同樣,須要對它進行轉義
profile模塊可用於代碼片斷效率分析;trace模塊能夠提供總的分享
cmd 能夠編寫命令行解釋器
14
re.search 尋找匹配的字符,找到了返回true,沒找到返回false
re.match 從字符串開頭匹配,
=========================
1 open第3個參數控制着文件的緩衝,取值0則表示無緩衝,直接寫磁盤;取值1則表示直接寫內存,只有flush或close時才寫磁盤;大於1時表明換屆區大小(單位是字節),-1(或其餘負數)表明使用默認緩衝區大小
2 sys.stdin sys.stdout sys.stderr :它們都是文件,大部分文件對象的方法它們也可使用(如read)
3 隨意讀取使用seek:seek(offset,whence),其中offset表示偏移的字節數,whence默認是0,表示從文件開頭開始偏移,取值1時表示從當前位置開始偏移,取值2時表示從文件結尾移動
4 tell返回當前文件的位置
5 讀取大文件的方法:
with open(path,'r') as f: for line in f: print(line) print("+++++++++++") with open(path,'r') as f: while True: line=f.readline() if line: print(line) else: break print("+++++++++++")
6 有雙下劃線的方法是私有方法
7 前面有下劃線的名字都不會被帶星號的Import語句導入(from module import *)
8 判斷一個類是不是另外一個類的子類:issubclass
9 在多重繼承中,若父類中有相同名字的方法,則先繼承的類中的方法會重寫後續繼承的類中的方法
10 判斷方法是否存在:hasattr(Zcy,'haha')
調用方法:getattr(Zcy(),'haha')()
設置方法:
setattr(Zcy,'oo','ouou') print(Zcy.oo) def pp(): print('pp') setattr(Zcy,'rr',pp) Zcy.rr()
11
12 本身的異常類要繼承自 Exception
13 若想將捕獲的異常 傳遞出去,只需調用不帶參數的raise
try: print(1/0) except ZeroDivisionError: print("sdf") raise
14 捕獲多個異常
try: print(1/'sdf') except (ZeroDivisionError,TypeError): print("sdf")
15 訪問異常對象本是,下面示例中e就是異常對象自己
try: ss=1 print(ss.split(',')) except (ZeroDivisionError,TypeError,AttributeError) as e: print(e)
捕獲全部異經常使用 except Exception as e:
16 調用時間不可知,不建議使用
17 若子類重寫了構造方法,那麼必定要調用父類的構造方法,不然子類可能不能正確的初始化
18 x[-n] 和 x[ len(x)-n] 是同樣的
19