成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何進行處理Python對象參數解析

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

Python對象中使用C語言編寫的擴展模塊,必須將其編譯成動態鏈接庫的形式,通常使用Python的C語言擴展接口提供的函數PyArg_ParseTuple()來獲得這些參數值,希望本文能夠對大家有幫助。

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

Python是一門面向對象的腳本語言,所有的對象在Python解釋器中都被表示成PyObject,PyObject結構包含Python對象的所有成員指針。并且對Python對象的類型信息和引用計數進行維護。在進行Python的擴展編程時,一旦要在C或者C++中對Python對象進行處理,就意味著要維護一個PyObject結構。

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

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

下面的例子說明了Python解釋器如何利用引用計數來對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對象時,對引用計數進行正確的維護是一個關鍵問題,處理不好將很容易產生內存泄漏。Python的C語言接口提供了一些宏來對引用計數進行維護,最常見的是用Py_INCREF()來增加使Python對象的引用計數增1,用Py_DECREF()來使Python對象的引用計數減1。

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

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

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

【編輯推薦】

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

2010-01-27 15:29:45

C++異常處理

2010-09-27 10:54:53

JVM參數配置

2010-02-01 10:21:36

Python編碼轉換

2010-02-22 16:05:40

Python配置

2024-07-08 08:38:37

Python游戲開發

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 調試器

2010-03-15 15:45:15

Python編程語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人综合一区 | 人人99| 91精品国产一区二区三区蜜臀 | 亚洲免费网| 精品九九九| 久久国产精品一区二区 | 龙珠z在线观看 | 国产精品精品久久久 | 日韩视频一区在线观看 | 逼逼网| 在线黄 | 日本亚洲精品成人欧美一区 | 国产精品久久久久久久久久久久 | 午夜一区二区三区视频 | 国产一区二区日韩 | 欧美成人h版在线观看 | 国产精品爱久久久久久久 | 四色永久 | 日韩在线不卡 | 日本在线免费观看 | 国产激情视频在线 | 久久精品久久久久久 | 国产精品成人一区二区三区 | 免费观看黄网站 | 成人午夜视频在线观看 | 免费成人高清在线视频 | 亚洲一区在线日韩在线深爱 | 亚洲成人动漫在线观看 | 99re6在线 | 色综合色综合色综合 | 国产欧美日韩在线观看 | 高清国产午夜精品久久久久久 | 国产精品久久久久久av公交车 | 国产网站在线免费观看 | 男女羞羞视频在线看 | 精品视频在线播放 | 国产综合久久 | av激情在线 | 午夜免费电影 | 国产精品久久久久久久久久久久 | 亚洲91|