Python源碼學習(一)

來源:互聯網
上載者:User

標籤:targe   stand   call   typedef   var   str   計數   pointer   對象   

      考慮到效能的要求,我在工作中用的最多的是c/c++,然而,工作中又經常會有一些驗證性的工作,這些工作對效能的要求並不高,反而對完成的效率要求更高,對於這樣的工作,用一種開發效率高的語言是合理的想法,鑒於python的流行以及為大家所稱道的開發效率和靈活性,我便開始漸漸多的接觸起python來。可是,問題又來了,用python驗證完了之後,需要最佳化效能,甚至移植到c/c++裡面來,這時候,愈發覺得有必要深入學習python,瞭解其內部原理。經過一番搜尋,找到了這本《Python源碼剖析》,開始了我的python深入學習之旅。

一、Python對象初探

python語言中的一切,包括變數和變數類型,底層都是靠c語言的某種對象/結構體來實現的。也可以理解為,python中所有的東西都是用c的對象來實現的(這裡理解為struct的對象)。這些所有對象都對應的定義中,開頭的部分是相同的,都是PyObject:

[object.h]typedef struct _object {    PyObject_HEAD} PyObject;
[object.h]#ifdef Py_TRACE_REFS/* Define pointers to support a doubly-linked list of all live heap objects. */    #define _PyObject_HEAD_EXTRA                struct _object *_ob_next;           struct _object *_ob_prev;    #define _PyObject_EXTRA_INIT 0, 0, #else    #define _PyObject_HEAD_EXTRA    #define _PyObject_EXTRA_INIT#endif/* PyObject_HEAD defines the initial segment of every PyObject. */#define PyObject_HEAD           \    _PyObject_HEAD_EXTRA            int ob_refcnt;              struct _typeobject *ob_type;

整型變數ob_refcnt與Python的記憶體管理機制有關,它實現了基於引用計數的垃圾收集機制。而ob_type是一個指向_typeobject結構體的指標,_typeobject結構體定義了所指向對象的類型,定義如下:

[object.h]typedef struct _typeobject {    PyObject_VAR_HEAD    char *tp_name; /* For printing, in format "<module>.<name>" */    int tp_basicsize, tp_itemsize; /* For allocation */    /* Methods to implement standard operations */    destructor tp_dealloc;    printfunc tp_print;    ……    /* More standard operations (here for binary compatibility) */    hashfunc tp_hash;    ternaryfunc tp_call;    ……} PyTypeObject;

也就是說PyTypeObject這個結構體定義了python的c代碼中的對象的類型。

 

Python源碼學習(一)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.