⑴ 怎樣把python代碼嵌入到C程序
這篇文章主要介紹了將Python代碼嵌入C++程序進行編寫的實例,盡管通常還是Python代碼中調用C++程序的情況較多...需要的朋友可以參考下
把python嵌入的C++裡面需要做一些步驟
安裝python程序,這樣才能使用python的頭文件和庫
在我們寫的源文件中增加「Python.h」頭文件,並且鏈入「python**.lib」庫(還沒搞清楚這個庫時靜態庫還是導出庫,需要搞清楚)
掌握和了解一些python的C語言api,以便在我們的c++程序中使用
常用的一些C API函數
在了解下面的函數之前有必要了解一下**PyObject***指針,python裡面幾乎所有的對象都是使用這個指針來指示的。
Py_Initialize()&&Py_Finalize()
在調用任何python的c函數之前需要調用的函數,「Py_Initialize」是用來初始化python模塊的,推測是載入初始化載入dll的。對應的在使用python模塊之後用「Py_Finalize」來釋放模塊。
PyImport_ImportMole()
用來載入一個python模塊,這個模塊就是一般的python文件。這里需要注意的是,在載入這個模塊的時候會執行模塊裡面所有可以執行的語句。包括import導入語句和在函數體之外的所有語句
PyObject_GetAttrString()
返回模塊裡面的函數
Py_BuildValue()
建立一個參數元組,一般都是用這個函數來建立元組,然後將這個元組作為參數傳遞給python裡面的函數。
PyEval_CallObject()
調用函數,並把「Py_BuildValue」建立的元組作為參數傳遞給被調用的函數
源碼實例
下面的實例是在c++代碼中調用Python的函數,傳遞參數並且獲取返回值
test.cpp代碼
[cpp]view plain
#include<iostream>
#include<Python.h>
usingnamespacestd;
intmain(intargc,char*argv[])
{
Py_Initialize();//初始化
PyObject*pMole=NULL;
PyObject*pFunc=NULL;
PyObject*pParam=NULL;
PyObject*pResult=NULL;
constchar*pBuffer=NULL;
intiBufferSize=0;
pMole=PyImport_ImportMole(「test_python");
if(!pMole)
{
cout<<"getmolefailed!"<<endl;
exit(0);
}
pFunc=PyObject_GetAttrString(pMole,"main");
if(!pFunc)
{
cout<<"getfuncfailed!"<<endl;
cout<<int(pFunc)<<endl;
exit(0);
}
pParam=Py_BuildValue("(s)","HEHEHE");
pResult=PyEval_CallObject(pFunc,pParam);
if(pResult)
{
if(PyArg_Parse(pResult,"(si)",&pBuffer,iBufferSize))
{
cout<<pBuffer<<endl;
cout<<iBufferSize<<endl;
}
}
Py_DECREF(pParam);
Py_DECREF(pFunc);
Py_Finalize();
//cout<<"hello"<<endl;
return0;
}
test_python.py代碼
[py]view plain
defmain(szString):
return("hello",5)
⑵ 如何利用python實現類似c語言的共同體
import ctypes #你可以看看ctypes,它可以支持union,下面是一個例子
from ctypes import ( Union, Array,
c_uint8, c_uint32,
cdll, CDLL
)
class uint8_array(Array):
_type_ = c_uint8
_length_ = 4
class u_type(Union):
_fields_ = ("data", c_uint32), ("chunk", uint8_array)
# load printf function from Dynamic Linked Libary libc.so.6 (I'm use linux)
libc = CDLL(cdll.LoadLibrary('libc.so.6')._name)
printf = libc.printf
if __name__ == "__main__": # initialize union
_32bitsdata = u_type() # set values to chunk
_32bitsdata.chunk[:] = (1, 2, 3, 4) # and print it
printf(b"Data in 32 bits: %d\n", _32bitsdata.data)
⑶ 將python改為C語言(主要是藍框)
Python語言
checkerboard=[]
for i in range(19):
checkerboard.append(input().split())
轉成C語言(函數getchar()是為了吃掉空格和回車符)
#include<stdio.h>
int main(){
char checkerboard[19][19]={'0'};
int i,j;
for(i=0;i<19;i++){
for(j=0;j<19;j++){
scanf("%c",&checkerboard[i][j]);
getchar();
}
}
return 0;
}
我給你一個C語言小例子
#include<stdio.h>
int main(){
char checkerboard[4][4]={'0'};
int i,j;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
scanf("%c",&checkerboard[i][j]);
getchar();
}
}
for(i=0;i<4;i++){
for(j=0;j<4;j++){
printf("%c ",checkerboard[i][j]);
}
printf(" ");
}
return 0;
}
⑷ 求幫忙把python翻譯成c語言
Python的
簡單
的Python的特點是一種語言代表了一種簡單的意識形態。閱讀一個良好的Python程序就感覺像是在讀英語,但英語很嚴格!這種偽代碼的Python的本質是它最大的優勢之一。它可以讓你專注於解決問題,而不是語言本身。
了解
正如你所看到的,Python是非常容易使用。正如前面提到的,Python有一個很簡單的語法。 - 免費,開源
Python是FLOSS(自由/開源軟體)。簡單地說,你可以自由地發布這個軟體的拷貝,閱讀它的源代碼,它,把它的一部分用於新的自由軟體。 FLOSS是一個以社區為基礎的知識共享的概念。這就是為什麼Python是那麼好,原因之一 - 它是一組想看看是誰創造並不斷完善更好的Python。
高級語言
當您使用Python編程語言,你需要考慮如何管理底層細節,如程序使用的一類內存。點擊看詳細可移植性由於它的開源本質,Python已經被移植在許多平台上(經過改動使它能夠在不同的平台上工作)。如果你小心地避免使用依賴於系統的特性,那麼你所有的Python程序無需任何這些平台上運行。
這些平台,包括Linux,Windows,FreeBSD的,Macintosh電腦時,Solaris,OS / 2,Amiga上,AROS,AS / 400,BeOS的,OS / 390和z / OS,Palm操作系統,QNX,VMS,Psion公司,的Acom RISC OS,VxWorks的游戲機,夏普的Zaurus,Windows CE和PocketPC的連!
解釋性
這需要一些解釋。
編譯語言,如C或C ++程序可以寫入到從源文件(即C或C ++)轉換到您的計算機使用的語言(二進制代碼,即0和1)。通過這個過程中,編譯器和各種標志和選項。當你運行你的程序,鏈接器/載入器軟體從硬碟復制你的程序到內存並運行。
的Python,程序不需要編譯成二進制代碼。可以直接從源代碼運行程序。在計算機內部,Python解釋器把源代碼轉換成中間形式稱為位元組碼,然後把它翻譯成機器語言的計算機並運行。事實上,因為你不再需要擔心如何編譯程序,如何保證正確的連接轉載圖書館等,所有這些都使得使用Python更加容易。因為你只需要你的Python程序拷貝到另一台計算機,它可以工作,這也使得你的Python程序更加便攜。點擊看詳細的Python支持面向對象的面向過程的編程也支持面向對象的編程。在這個過程中,面向對象語言中,程序是建立了由過程或僅僅是可重復使用的代碼的功能。在面向對象的語言中,程序是由累積數據和功能的對象的組合。和Java相比其他主要的語言如C ++,Python有實現面向對象編程一個非常強大和簡單的方法。
可擴展性
如果您需要一段關鍵代碼運行得更快或者希望某些演算法不公開,你可以把你寫在C或C計劃的一部分++,然後在你的Python程序來使用它們。
嵌入
可以嵌入的Python你的C / C ++程序中,讓你的程序提供腳本功能。
豐富的庫
Python標准庫確實很龐大。它可以幫助你處理各種工作,包括正則表達式,文檔生成,單元測試,線程,資料庫,Web瀏覽器,CGI,FTP,電子郵件,XML,XML-RPC,HTML,WAV文件,密碼,GUI(圖形用戶界面),Tk和其他系統相關的操作。請記住,只要是Python的安裝,所有這些功能都可用。這被稱為Python的「功能齊全」的概念。
除了標准庫,還有許多其他高質量的庫,如wxPython的,扭曲和Python圖像庫等等。
⑸ 把這個python轉換成C語言代碼
python不像C語言,有{ }
縮進很重要的,你要貼出有縮進的代碼才行
⑹ 怎麼把這個C語言轉換成python
C語言不能轉化為python,它們之間沒有之間聯系,只能說演算法是可以轉化實現的。
⑺ python代碼如何轉換成C語言代碼代碼如下:
轉換c語言後的代碼:
void tset(int s[],int n){
for(int i=0;i<n;i++)
s[i]=s[i]+1;
}
int s[]={1, 2, 3, 4, 5, 5, 6, 1, 4, 5, 5, 7, 1, 5, 3, 8, 3, 5, 9, 1};
int i;
while( i <=30)
tset(s);
i+=1
if i>1:
printf("%s",s);
i+=1;
⑻ 哪位大神能把這段Python代碼轉為C語言代碼
ipython作為一個非常有用的python shell,在linux下安裝非常方便,但是在win下安裝還有點麻煩,下面就是詳細的安裝步驟。 工具/原料 python ez_setup.py pyreadline ipython 方法/步驟 1 python安裝完成以後,然後需要安裝ez_setup.py
⑼ 有沒有能把python代碼轉換為c語言代碼的工具
C++兼容C語言,但C語言不可能兼容C++
所以,C++代碼直接轉是轉不了C的。
只能從邏輯上,對C++的許多語法進行代碼上的重新實現。
比如將對象轉換為結構體,將對象封裝的函數修改為獨立函數,增加對象參數。
將重載去掉,而是根據需要調用非重載的不同名的函數。
總之來說,硬要將C++轉為C實現的話,那代碼重寫的工作是避免不了的。