python重要知識點(不斷更新)


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM