⑴ 怎样把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实现的话,那代码重写的工作是避免不了的。