Python環境在進行初始化后的效果
Python環境在不少的時候需要進行初始化,下面我們就來看看在Python環境初始化之后需要做的事情。現在Python環境面向對象機制的對象和類型的抽象都已經說過了,接下來我們來看下在python環境中真實存在的對象在C語言實現的時候是怎么樣的呢?
首先需要談的是那些Python的內置對象,這些都是C語言定義了的,當Python環境初始化后,這些對象便創建好了。
- 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環境中是一個比較基礎的對象,它在C語言中對應的結構體是PyBaseObject_Type,從C語言中的這個命名我們可以大概知道這個類是一個類型對象.
還有就是Python中的<type 'type'>在C語言中對應著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 */
- ……
- };
我們再看看比較具體的整數一個整數instance在C語言中的表示的結構體是PyIntObject
- typedef struct {
- PyObject_HEAD
- long ob_ival;
- } PyIntObject;
- typedef struct {
- PyObject_HEAD
- long ob_ival;
- } PyIntObject;
也就是說通過這樣的結構體我們就可以在C語言的的運行時中指向Python的整數對象.那么相應的我們Python環境的整數類型對象為
- yTypeObject PyInt_Type = {
- PyObject_HEAD_INIT(&PyType_Type)
- 0,
- "int",
- sizeof(PyIntObject),
- ……
- };
以上就是對Python環境在初始化之后進行的相關處理。
【編輯推薦】