Python簡潔優雅,庫豐富而強大,特別是在數據分析領域,有着重要的地位。
下面是我學習中總結的一些重要,容易忘記的知識點
一、Python是如何進行內存管理的?
先說明一點,Python每創建一個對象,這個對象都是一個三元組(標識,類型,值)。當我們調用一個對象時一般是按引用傳遞,
有必要時才按值傳遞。(按引用不新建對象,按值則會新建對象)
1.引用計數機制
創建對象后,每分配一個名稱或將對象放入一個容器時,該對象的引用計數都會增加;
每del一個名稱或者引用超出作用域或者被重新賦值時,該對象的引用計數就會減少。
當引用計數歸零時,它將被垃圾收集機制處理掉。
2.內存池機制
Python提供了對內存的垃圾收集機制,但是它將不用的內存放到內存池而不是返回給操作系統。
Python中所有小於256個字節的對象都使用pymalloc實現的分配器,而大的對象則使用系統的 malloc。
其中不同類型的對象,如整數,浮點數和List,都有其獨立的私有內存池,對象間不共享內存池。
二、try…except…except…[else…][finally…]
python先嘗試執行try下語句:
若異常,則分別與數個except異常匹配,並執行相匹配的except語句,若都不匹配則異常會傳遞到最高層try中,最后執行fanally語句;
若無異常,則執行else語句,最后執行fanally語句。
以下示例代碼,大家可以試運行下,幫助記憶
1 def exceptTest(): 2 try: 3 print 'doing some work, and maybe exception will be raised' 4 raise IndexError('index error') 5 #print 'after exception raise' 6 #return 0 7 8 except KeyError, e: 9 print 'in KeyError except' 10 print e 11 #return 1 12 except IndexError, e: 13 print 'in IndexError except' 14 print e 15 #return 2 16 except ZeroDivisionError, e: 17 print 'in ZeroDivisionError' 18 print e 19 #return 3 20 else: 21 print 'no exception' 22 return 4 23 finally: 24 print 'in finally' 25 #return 5 26 27 resultCode = exceptTest() 28 print resultCode