偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何進行處理Python對象參數(shù)解析

開發(fā) 后端
Python將被更加廣泛地應用于各個領域,為了克服腳本語言執(zhí)行速度慢的問題,Python對象提供了相應的C語言擴展接口,通過將影響執(zhí)行性能的關(guān)鍵代碼用C語言實現(xiàn)。

Python對象中使用C語言編寫的擴展模塊,必須將其編譯成動態(tài)鏈接庫的形式,通常使用Python的C語言擴展接口提供的函數(shù)PyArg_ParseTuple()來獲得這些參數(shù)值,希望本文能夠?qū)Υ蠹矣袔椭?/FONT>

Python是用C語言實現(xiàn)的一種腳本語言,本身具有優(yōu)良的開放性和可擴展性,并提供了方便靈活的應用程序接口(API)。從而使得C/C++程序員能夠在各個級別上對Python解釋器的功能進行擴展。在使用C/C++對Python進行功能擴展之前,必須首先掌握Python解釋所提供的C語言接口。

Python是一門面向?qū)ο蟮哪_本語言,所有的對象在Python解釋器中都被表示成PyObject,PyObject結(jié)構(gòu)包含Python對象的所有成員指針。并且對Python對象的類型信息和引用計數(shù)進行維護。在進行Python的擴展編程時,一旦要在C或者C++中對Python對象進行處理,就意味著要維護一個PyObject結(jié)構(gòu)。

Python的C語言擴展接口中,大部分函數(shù)都有一個或者多個參數(shù)為PyObject指針類型,并且返回值也大都為PyObject指針。為了簡化內(nèi)存管理,Python通過引用計數(shù)機制實現(xiàn)了自動的垃圾回收功能,Python中的每個對象都有一個引用計數(shù)。

用來計數(shù)該對象在不同場所分別被引用了多少次。每當引用一次Python對象,相應的引用計數(shù)就增1,每當消毀一次Python對象,則相應的引用就減1,只有當引用計數(shù)為零時,才真正從內(nèi)存中刪除Python對象。

下面的例子說明了Python解釋器如何利用引用計數(shù)來對Pyhon對象進行管理:

  1. #include <Python.h> 
  2.  
  3. PyObject* wrap_fact(PyObject* self, PyObject* args)   
  4. {  
  5.   int n, result;  
  6.     
  7.   if (! PyArg_ParseTuple(args, "i:fact", &n))  
  8.     return NULL;  
  9.   result = fact(n);  
  10.   return Py_BuildValue("i", result);  
  11. }  
  12.  
  13. static PyMethodDef exampleMethods[] =   
  14. {  
  15.   {"fact", wrap_fact, METH_VARARGS, "Caculate N!"},  
  16.   {NULL, NULL}  
  17. };  
  18.  
  19. void initexample()   
  20. {  
  21.   PyObject* m;  
  22.   m = Py_InitModule("example", exampleMethods);  

在C/C++中處理Python對象時,對引用計數(shù)進行正確的維護是一個關(guān)鍵問題,處理不好將很容易產(chǎn)生內(nèi)存泄漏。Python的C語言接口提供了一些宏來對引用計數(shù)進行維護,最常見的是用Py_INCREF()來增加使Python對象的引用計數(shù)增1,用Py_DECREF()來使Python對象的引用計數(shù)減1。

該函數(shù)是Python解釋器和C函數(shù)進行交互的接口,帶有兩個參數(shù):self和args。參數(shù)self只在C函數(shù)被實現(xiàn)為內(nèi)聯(lián)方法(built-in method)時才被用到。通常該參數(shù)的值為空(NULL),參數(shù)args中包含了Python解釋器要傳遞給C函數(shù)的所有參數(shù),通常使用Python的C語言擴展接口提供的函數(shù)PyArg_ParseTuple()來獲得這些參數(shù)值。

方法列表中的每項由四個部分組成:方法名、導出函數(shù)、參數(shù)傳遞方式和方法描述。方法名是從Python解釋器中調(diào)用該方法時所使用的名字。參數(shù)傳遞方式則規(guī)定了Python向C函數(shù)傳遞參數(shù)的具體形式,可選的兩種方式是METH_VARARGS和METH_KEYWORDS。

其中METH_VARARGS是參數(shù)傳遞的標準形式,它通過Python的元組在Python解釋器和C函數(shù)之間傳遞參數(shù),若采用METH_KEYWORD方式,則Python解釋器和C函數(shù)之間將通過Python的字典類型在兩者之間進行參數(shù)傳遞。

【編輯推薦】

  1. 有關(guān)Python系統(tǒng)文件進行介紹指導
  2. 如何正確的使用Python函數(shù)
  3. 對Python 構(gòu)建工具進行詳細介紹分析
  4. PythonAndroid淺析Python優(yōu)勢所在
  5. 如何使用Python模塊解析配置文件?
責任編輯:chenqingxiang 來源: NET130
相關(guān)推薦

2010-01-27 15:29:45

C++異常處理

2010-09-27 10:54:53

JVM參數(shù)配置

2010-02-01 10:21:36

Python編碼轉(zhuǎn)換

2010-02-22 16:05:40

Python配置

2024-07-08 08:38:37

Python游戲開發(fā)

2010-02-03 13:55:51

Python 代碼

2010-08-05 09:46:45

FlexAIR文件打包

2009-12-23 11:01:50

ADO.NET 批處理

2010-02-01 14:48:43

2010-02-01 17:33:24

Python主線程

2010-02-01 18:20:17

Python 多重繼承

2010-03-11 17:38:20

Python中文

2010-03-15 15:11:50

Python列表

2010-02-02 16:47:12

Python主線程

2010-06-12 09:37:02

UML需求分析

2010-03-01 16:32:36

Python語言

2010-03-09 18:14:55

Python sock

2010-02-01 16:22:36

Python字符串操作

2010-03-01 11:06:52

Python 調(diào)試器

2010-03-15 15:45:15

Python編程語言
點贊
收藏

51CTO技術(shù)棧公眾號