本文目录一览:
- 1、怎样将一个C++对象传递到PYTHON中
- 2、如何实现 C/C++ 与 Python 的通信
- 3、c++和python先学哪个?
- 4、c语言和python先学哪个?
- 5、C语言怎么转化成python
- 6、学Python语言要从C/C++开始学起吗?
怎样将一个C++对象传递到PYTHON中
很多办法都可以
如果你的c++对象是已有的代码,可以用cpython包装成Python对象,这些cpython包装的对象有一个指针是指向你要包装的c++对象的,然后提供访问c++对象的方法。比如你一颗树可以包装成Python对象,树节点也包装成Python对象,只要是复杂一点的c++对象都可以包装成Python对象。如果c++部分的代码还没写,可以用cython直接来写,这样自动扩展成Python模块,这样的模块通常是对性能要求很高的才需要专门用c扩展也可以用Python自带的ctypes模块直接定义c++
对象,这种对象是可以直接导到Python使用的。
如何实现 C/C++ 与 Python 的通信
C/C++ 调用 Python(基础篇)
Python 本身就是一个C库。你所看到的可执行体python只不过是个stub。真正的python实体在动态链接库里实现,在Windows平台上,这个文件位于 %SystemRoot%\System32\python27.dll。
你也可以在自己的程序中调用Python,看起来非常容易:
//my_python.c
#include Python.h
int main(int argc, char *argv[])
{
Py_SetProgramName(argv[0]);
Py_Initialize();
PyRun_SimpleString(“print ‘Hello Python!’\n”);
Py_Finalize();
return 0;
}
在Windows平台下,打开Visual Studio命令提示符,编译命令为
cl my_python.c -IC:\Python27\include C:\Python27\libs\python27.lib
在Linux下编译命令为
gcc my_python.c -o my_python -I/usr/include/python2.7/ -lpython2.7
在Mac OS X 下的编译命令同上
产生可执行文件后,直接运行,结果为输出
Hello Python!
Python库函数PyRun_SimpleString可以执行字符串形式的Python代码。
虽然非常简单,但这段代码除了能用C语言动态生成一些Python代码之外,并没有什么用处。我们需要的是C语言的数据结构能够和Python交互。
下面举个例子,比如说,有一天我们用Python写了一个功能特别强大的函数:
def great_function(a):
return a + 1
接下来要把它包装成C语言的函数。我们期待的C语言的对应函数应该是这样的:
int great_function_from_python(int a) {
int res;
// some magic
return res;
}
首先,复用Python模块得做‘import’,这里也不例外。所以我们把great_function放到一个module里,比如说,这个module名字叫 great_module.py
接下来就要用C来调用Python了,完整的代码如下:
#include Python.h
int great_function_from_python(int a) {
int res;
PyObject *pModule,*pFunc;
PyObject *pArgs, *pValue;
/* import */
pModule = PyImport_Import(PyString_FromString(“great_module”));
/* great_module.great_function */
pFunc = PyObject_GetAttrString(pModule, “great_function”);
/* build args */
pArgs = PyTuple_New(1);
PyTuple_SetItem(pArgs,0, PyInt_FromLong(a));
/* call */
pValue = PyObject_CallObject(pFunc, pArgs);
res = PyInt_AsLong(pValue);
return res;
}
从上述代码可以窥见Python内部运行的方式:
所有Python元素,module、function、tuple、string等等,实际上都是PyObject。C语言里操纵它们,一律使用PyObject *。
Python的类型与C语言类型可以相互转换。Python类型XXX转换为C语言类型YYY要使用PyXXX_AsYYY函数;C类型YYY转换为Python类型XXX要使用PyXXX_FromYYY函数。
也可以创建Python类型的变量,使用PyXXX_New可以创建类型为XXX的变量。
若a是Tuple,则a[i] = b对应于 PyTuple_SetItem(a,i,b),有理由相信还有一个函数PyTuple_GetItem完成取得某一项的值。
不仅Python语言很优雅,Python的库函数API也非常优雅。
现在我们得到了一个C语言的函数了,可以写一个main测试它
#include Python.h
int great_function_from_python(int a);
int main(int argc, char *argv[]) {
Py_Initialize();
printf(“%d”,great_function_from_python(2));
Py_Finalize();
}
编译的方式就用本节开头使用的方法。
在Linux/Mac OSX运行此示例之前,可能先需要设置环境变量:
bash:
export PYTHONPATH=.:$PYTHONPATH
csh:
setenv PYTHONPATH .:$PYTHONPATH
c++和python先学哪个?
从难易程度来说,可以先学python。
C语言是一门通用计算机编程语言,是面向过程的语言,其语法结构及其严谨,且应用十分广泛。而且只要将C语言研究透彻了的话,学习其他语言就会轻松很多,但又因C语言庞大的功能性,入门程序相对来说比较复杂,很难迅速的见到成效。所以坚定要走技术这一块的人,还是有必要多花点心思在学习上面。
Python语言是一门面向对象的解释型计算机程序设计语言,相较于C语言而言,如果学者先了解了什么是面向过程,再去了解什么是面向对象的话,这样子学习会更有效率,达到事半功倍的效果。并且Python语言的入门程序比较简单,前期的学习也比C语言要简单。
Python和C语言的区别
1、语言类型
Python是一种基于解释器的,面向对象的解释型语言。解释器会逐行读取代码;首先将Python编译为字节码,然后由大型C程序解释。
C是一种面向过程的编译型语言,完整的源代码将直接编译为机器代码,由CPU直接执行。
2、内存管理
Python使用自动垃圾收集器进行内存管理。
在C语言中,程序员必须自己进行内存管理。
c语言和python先学哪个?
c语言和python先学哪个都可以,C语言和Python只是语法不同,作为入门语言各有各的好处。
从C语言入门,C语言是面向过程的语言,其语法结构及其严谨,且应用十分广泛。而且只要将C语言研究透彻,学习其他语言就会轻松很多,但又因C语言庞大的功能性,入门程序相对来说比较复杂,很难迅速的见到成效。
从Python语言入门,Python语言是面向对象的解释型计算机程序设计语言,相较于C语言而言,如果学者先了解了什么是面向过程,再去了解什么是面向对象,这样学习会更有效率,达到事半功倍的效果。
并且Python语言的入门程序比较简单,前期的学习也比C语言要简单,但是先学Python的话,可能会导致对底层实现方面了解比较模糊。
C语言特点
(1)简洁的语言
C语言包含的各种控制语句仅有9种,关键字也只有32个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。
(2)具有结构化的控制语句
C语言是一种结构化的语言,提供的控制语句具有结构化特征,如for语句、if…else语句和switch语句等。可以用于实现函数的逻辑控制,方便面向过程的程序设计。
(3)丰富的数据类型
C语言包含的数据类型广泛,不仅包含有传统的字符型、整型、浮点型、数组类型等数据类型,还具有其他编程语言所不具备的数据类型,其中以指针类型数据使用最为灵活,可以通过编程对各种数据结构进行计算。
C语言怎么转化成python
要将C语言转化为python,前提:
1
对C语言语法即python编程均熟练掌握;
2
对算法相关有一定了解;
3
至少可以看懂要转换的C语言程序。
由于C语言的语句,与python没有对应关系,所以只能按照如下方式转换:
1
读懂C语言代码实现功能,可以以函数为单位;
2
按照功能,依照python方式实现相同功能。
学Python语言要从C/C++开始学起吗?
不需要,C不是Python的基础,Python的应用场景和C非常不同。Python语句规范简单,上手快,在前期可能比C、C++容易学一些,后期深入之后会有面向对象之类的内容。自身也包含了很完善的函数库,不需要自己编写。Python相比C、C++更适合作文本信息处理的工作。
而且,学Python不需要任何基础,0基础也可以学。不论是什么语言都是从零开始学习的,毕竟没有人生来就会写代码。Python语言是面向对象,而C语言是面向过程,所以本质上还是有很多区别的。C语言的难度远远高于Python。C过于底层,强在内存操作,功能实现起来却十分复杂,并不适合作为上手语言。Python的被称为傻瓜式编程语言,是最接近自然语言的一种。无论是国内大厂还是国外大厂都在用Python完成各种各样的任务。关于Python培训的更多相关知识,建议到千锋教育进行更详细的了解,目前,千锋教育已在北京、深圳、上海、广州、郑州、大连等20余个核心城市建立直营校区,等待你的随听。
原创文章,作者:简单一点,如若转载,请注明出处:https://www.506064.com/n/130771.html