Python環(huán)境在進行初始化后的效果
Python環(huán)境在不少的時候需要進行初始化,下面我們就來看看在Python環(huán)境初始化之后需要做的事情。現(xiàn)在Python環(huán)境面向?qū)ο髾C制的對象和類型的抽象都已經(jīng)說過了,接下來我們來看下在python環(huán)境中真實存在的對象在C語言實現(xiàn)的時候是怎么樣的呢?
首先需要談的是那些Python的內(nèi)置對象,這些都是C語言定義了的,當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)境中是一個比較基礎(chǔ)的對象,它在C語言中對應(yīng)的結(jié)構(gòu)體是PyBaseObject_Type,從C語言中的這個命名我們可以大概知道這個類是一個類型對象.
還有就是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ù)一個整數(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語言的的運行時中指向Python的整數(shù)對象.那么相應(yīng)的我們Python環(huán)境的整數(shù)類型對象為
- yTypeObject PyInt_Type = {
- PyObject_HEAD_INIT(&PyType_Type)
- 0,
- "int",
- sizeof(PyIntObject),
- ……
- };
以上就是對Python環(huán)境在初始化之后進行的相關(guān)處理。
【編輯推薦】