Get the App
SLTechnology News&Howtos  ›  Development  › 

How to make better use of Python programming language

Shulou Source: shulou.com Published: 2022-06-02 09:05:38 10月01日 Update

This article mainly explains "how to better use the Python programming language". The content in the article is simple and clear, and it is easy to learn and understand. Please follow the editor's train of thought to study and learn "how to use the Python programming language better".

Python object in C Angle of View

Let's go back to the source. Python is implemented in C and provides C AP to the outside world.

When we think about problems, it may be easy to understand objects, but computers can only understand byte sequences such as the 0Magne1 sequence. Fundamentally speaking, the objects in our computer language are just 0Magne1 sequences in a piece of memory space. These consecutive or discontinuous memory spaces can be seen as a whole at a higher level. In Python, the general object we mentioned is a piece of memory space that the structure in C applies for on the heap Heap.

In order to implement the object-oriented mechanism of Python in C language, we need to define some structures that can manipulate the memory space of those objects.

1.PyObject&PyVarObject

All Python objects have something in common, which we highly abstract into a structure, PyObject. The following is a reference clip:

Typedef struct _ object {PyObject_HEAD} PyObject; / / in fact, the macro PyObject_HEAD in the distribution version is int ob_refcnt; struct _ typeobject * ob_type

Ob_refcnt, which is object reference counting, exists to implement Python's reference-based garbage collection mechanism. There is also a pointer to a type object structure that represents the type of the object.

In the C language implementation, there is another structure extended to PyObject, that is PyVarObject, its content is PyObject_VAR_HEAD this macro, it has one more ob_size than PyObject to represent the length of variable-length objects.

Please don't be confused. There is no corresponding relationship between PyObject and PyVarObject and real objects in Python world. These two are just abstractions of all Python objects in C language representation. That is to say, in C language, as long as it is a Python object structure data, then the beginning of its memory will have several variables of the above structure body, so a PyObject pointer can point to all C language Python object structures, so that in the C language implementation, we can manipulate all built-in Python object structures through this unified pointer.

2.PyTypeObject

There is one thing that hasn't been mentioned just now, and that is the structure _ typeobject (PyTypeObject), which is an abstraction of all type objects in Python, so that we can call all type object structures through PyTypeObject pointers at the C language level. The following is a reference clip:

Typedef struct _ typeobject {/ / Note the beginning is PyObject_VAR_HEAD PyObject_VAR_HEAD char * tp_name; / * For printing, in format "." * / 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; thank you for reading, the above is the content of "how to better use the Python programming language". After the study of this article, I believe you have a deeper understanding of how to better use the Python programming language, and the specific use needs to be verified in practice. Here is, the editor will push for you more related knowledge points of the article, welcome to follow!

Tags: Object language structure memory programming language programming pointer space type thing content sequence learning but can pass that is point time mechanism fragment Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Shulou Information MariaDB Docker Linux Apple