Python環(huán)境在進(jìn)行初始化后的效果
Python環(huán)境在不少的時(shí)候需要進(jìn)行初始化,下面我們就來看看在Python環(huán)境初始化之后需要做的事情?,F(xiàn)在Python環(huán)境面向?qū)ο髾C(jī)制的對象和類型的抽象都已經(jīng)說過了,接下來我們來看下在python環(huán)境中真實(shí)存在的對象在C語言實(shí)現(xiàn)的時(shí)候是怎么樣的呢?
首先需要談的是那些Python的內(nèi)置對象,這些都是C語言定義了的,當(dāng)Python環(huán)境初始化后,這些對象便創(chuàng)建好了。
- PyAPI_DATA(PyTypeObject) PyType_Type; /* built-in 'type' */
- PyAPI_DATA(PyTypeObject) PyBaseObject_Type; /* built-in 'object' */
- PyAPI_DATA(PyTypeObject) PyType_Type; /* built-in 'type' */
- PyAPI_DATA(PyTypeObject) PyBaseObject_Type; /* built-in 'object' */
object對象在Python環(huán)境中是一個(gè)比較基礎(chǔ)的對象,它在C語言中對應(yīng)的結(jié)構(gòu)體是PyBaseObject_Type,從C語言中的這個(gè)命名我們可以大概知道這個(gè)類是一個(gè)類型對象.
還有就是Python中的<type 'type'>在C語言中對應(yīng)著PyType_Type
- PyTypeObject PyType_Type = {
- PyObject_HEAD_INIT(&PyType_Type)
- 0, /* ob_size */
- "type", /* tp_name */
- sizeof(PyHeapTypeObject), /* tp_basicsize */
- sizeof(PyMemberDef), /* tp_itemsize */
- ……
- };
- PyTypeObject PyType_Type = {
- PyObject_HEAD_INIT(&PyType_Type)
- 0, /* ob_size */
- "type", /* tp_name */
- sizeof(PyHeapTypeObject), /* tp_basicsize */
- sizeof(PyMemberDef), /* tp_itemsize */
- ……
- };
我們再看看比較具體的整數(shù)一個(gè)整數(shù)instance在C語言中的表示的結(jié)構(gòu)體是PyIntObject
- typedef struct {
- PyObject_HEAD
- long ob_ival;
- } PyIntObject;
- typedef struct {
- PyObject_HEAD
- long ob_ival;
- } PyIntObject;
也就是說通過這樣的結(jié)構(gòu)體我們就可以在C語言的的運(yùn)行時(shí)中指向Python的整數(shù)對象.那么相應(yīng)的我們Python環(huán)境的整數(shù)類型對象為
- yTypeObject PyInt_Type = {
- PyObject_HEAD_INIT(&PyType_Type)
- 0,
- "int",
- sizeof(PyIntObject),
- ……
- };
以上就是對Python環(huán)境在初始化之后進(jìn)行的相關(guān)處理。
【編輯推薦】