当前位置:首页 » 编程语言 » python适不适合嵌入C语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

python适不适合嵌入C语言

发布时间: 2022-10-18 05:49:58

A. python能做嵌入式吗

近些年来Python非常流行,Python是一种面向对象的解释型计算机程序设计语言,Python语法简洁清晰,易读性以及可扩展性,Python具有丰富和强大的库,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起,常被称为胶水语言,可以应用在图形处理,数学处理,Web编程,多媒体应用等领域。定位(推荐学习:Python视频教程)
在过去的这么长时间里,在嵌入式开发领域中开发语言以C/C++为主,如今基于Python的MicroPython已经涉入到该领域中,MicroPython是一位叫Damien George的工程师,基于ANSI C(c语言标准),然后在语法上又遵循了Python的规范,主要是为了能在嵌入式硬件上(这里特指微控制器级别)更易于的实现对底层的操作,MicroPython官方提供的硬件开发板叫PyBoard,除了官方提供的开发板外,还有一些嵌入式硬件也被成功移植了MicroPython,例如:Esp8266,WiPy,Espruino Pico,STM32F4 Discovery等。
MicroPython pyboard是一个紧凑的电子电路板,在裸机上运行MicroPython,为您提供一个低级Python操作系统,可用于控制各种电子项目。
MicroPython包含许多高级功能,如交互式提示,任意精度整数,闭包,列表理解,生成器,异常处理等。然而它非常紧凑,可以在256k的代码空间和16k的RAM内运行。
MicroPython旨在尽可能与普通Python兼容,以便您轻松地将代码从桌面传输到微控制器或嵌入式系统。
pyboard是官方的MicroPython微控制器板,完全支持软件功能。硬件有:
STM32F405RG单片机
具有硬件浮点的168 MHz Cortex M4 CPU
1024KiB闪存ROM和192KiB RAM
Micro USB连接器,用于电源和串行通信
Micro SD卡插槽,支持标准和高容量SD卡
3轴加速度计(MMA7660)
带可选备用电池的实时时钟
左侧和右侧边缘为24 GPIO,底行为5 GPIO,底部有LED和开关GPIO
3个12位模数转换器,16引脚,4个模拟地屏蔽
2x 12位数模转换器(DAC),可在引脚X5和X6上使用
4个LED(红色,绿色,黄色和蓝色)
1个复位和1个用户开关
板载3.3V LDO稳压器,能够提供高达250mA的电压,输入电压范围为3.6V至16V
ROM中的DFU引导加载程序,可轻松升级固件
Python本来就是非常容易入门的语言,同时也是应用广泛的语言,MicroPython将这用容易学习和使用的语言带到了嵌入式开发中,可以直接操作硬件,并且不需要编译和下载,可以快速的看到程序的结果,这是非常好的体验。PyBoard精致小巧是一块漂亮的开发板,可以方便的学习和开发,另外MicroPython也支持更多的平台,例如:STM32F4 Discovery Board,NUCLEO-F401RE Board,NUCLEO-F767ZI Board,ESP8266,WiPy等,以上的这些开发板都可以支持MicroPython,在开发板内刷上固件就可以使用了。MicroPython带来了全新的开发体验,有兴趣的同学可以试试。
更多Python相关技术文章,请访问Python教程栏目进行学习!以上就是小编分享的关于python能做嵌入式吗的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!

B. 怎样把Python代码嵌入到C程序

步骤1:安装Python开发包
由于需要访问Python/C API,首先安装Python开发包。
在Debian,Ubuntu或Linux Mint中:
在CentOS,Fedora或RHEL中:
安装成功后,Python头文件在/usr/include/python2.7。根据Linux发行版的不同,确切的路径可能是不相同的。例如,CentOS 6中是/usr/include/python2.6。
步骤2:初始化解释器并设置路径
C中嵌入Python的第一步是初始化Python解释器,这可以用以下C函数完成。
初始化解释器后,需要设置你的C程序中要导入的Python模块的路径。例如,比如你的Python模块位于/usr/local/moles。然后使用以下C函数调用来设置路径。
步骤3:数据转换
C中嵌入Python最重要的方面之一是数据转换。从C中传递数据到Python函数,需要首先将数据从C数据类型转换到Python数据类型。Python/C API提供各种函数来实现这。例如,转换C字符串到Python字符串,使用PyString_FromString函数。
另外一个类似函数PyInt_FromLong,将C中long数据类型转换为Python int。每个Python/C API函数返回一个PyObject类型的引用。
步骤4:定义一个Python模块
当你想嵌入Python代码到另一种语言如C,该代码需要被写成Python模块,然后用另一种语言“导入”。所以让我们来看看如何在C中导入Python模块。
为了进行说明,我们实现一个简单的Python模块例子如下:
以上的Python函数有一个字符串作为参数并返回两个重复的字符串。例如,如果输入字符串是“cyberpersons”,该函数返回'cyberpersonscyberpersons'。此模块文件命名为“printData.py”并将它放在前面声明的Python模块目录中(/usr/local/moles)。
步骤5:加载一个Python模块
现在你已经定义了Python模块,是时候在C程序中加载它了。导入模块的C代码看起来像这样:
步骤6:构建函数的参数
当加载一个模块时,可以调用模块中定义的Python函数。通常,我们需要传递一个或多个参数到一个Python函数。我们必须构建一个Python元组对象,它包括Python函数中的参数。
在我们的例子中,printData函数定义带一个参数的模块。因此,我们构建一个大小是一的Python元组对象如下。我们可以使用PyTuple_SetItem设置元组对象的每个项。
我们已经成功构建一个参数传递到函数调用,是时候从C程序调用python函数了。
步骤7:调用Python函数
一旦成功创建Python元组对象作为函数参数,我们可以调用一个带参数的Python函数。为此,通过使用PyObject_GetAttrString首先获得模块中定义的函数的引用,然后使用PyObject_CallObject调用该函数。例如:
步骤8:错误检查
避免运行时错误的常见方法是检查函数的返回值并根据返回值采取适当的行动。类似于C程序中的全局变量errno,Python/C API提供一个全局指示符,它报告最后发生的错误。当Python/C API函数失败,全局指示符设置为指示错误,并且PyErr_Print可以用于显示相应的人类可读的trackback。例如:

在你的应用程序中,你可以轻松地将各种错误检查。
这里是完整的C程序,它如本教程描述的嵌入Python代码。

步骤9:编译和执行
保存以上代码到finalCode.c,并且链接Python库(-lpython2.7)编译该代码。根据发行版的不同,可能使用不同的版本(例如,-lpython2.6)。

C. 学了Python对C语言有影响不

Python我不是很了解。应该是一种脚本语言吧,c语言较底层的一种面向过程的编程语言。
1.本身两者确实不一样,不会造成冲突。用到什么项目就用什么语言。
2.编程语言和咱们的语言是一样的。多学一种语言,多一种能力。比如英语和日语,是否会感到混淆?
所以只要你学的扎实,是不会出现混淆的,相反会成为一个多面手。何乐而不为。
3.学习多种编程语言没有问题,但要学一样就像一样。坚持钻研才是关键,这样才能到达目的吧。

D. 怎样把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)

E. python与c语言的关系

C语言难,Python简单。Python上手简单有交互性强的开放环境,还有众多的第三方库,学习起来要比C语言容易很多;而C语言底层强在内存操作,功能实现起来却十分复杂并不适合新手作为上手语言。
Python和C语言各有各的优势,Python语法非常特殊,Python是由空格严格控制的,这对于刚接触编程的人来说并不好;如果你用C语言开始编程,可以更好地掌握编程基础,理解代码操作原理,但是学习起来很枯燥,会阻碍你的学习,所以建议从Python语言开始学习。
对比C语言,Python不仅简单、语法清晰,而且前景好、岗位多、薪资待遇高、就业范围广,绝对是0基础的首选。
Python和C语言有什么区别呢?来自于四点:
语言不同。C语言是一种编译的语言,而Python是脚本语言;
全局变量方面。Python中,我们需要引用别的模块;C语言中,需要在头部使用include去引入;
状态不同。C语言是静态语言,而Python是动态语言;
数组和list不同。C语言中的数组里面都是数字,而list包含很多不同的元素。

F. python中有C语言吗

1.C语言是编译语言,Python是脚本语言。说是C语言会比Python快
2.list和数组
C语言中的数组,里面的都是数字,而list中可以包含很多不同的数据元素。
2.import和include
在C语言中使用那个库函数,需要引入头文件用include引入,而在python中需要引入别的模块或者函数时需要用import引入。
两者的不同机制是,C语言中include是告诉预处理器,这个include指定的文件的内容,要当作本地源文件出现过,而python中的import可以通过简单的import
导入,或者是 import numpy as np
3.全局变量方面
在C语言中,声明全局变量,如果值是恒定的,那么可以直接用#define声明,如果只是声明全局,并且变量的值是可变的,那么直接类似int a
就可以了,在python中,声明全局变量时,需要加上global,类似global a,在函数里面使用的时候需要先声明global a
,否则直接用a那么python会重新创建一个新的本地对象并将新的值赋值给他,原来的全局变量的值并不变化

G. python怎样嵌入c

用c语言编写一个动态库,提供两个函数,两个数的整形求和,两个浮点数的求和。取名为mylib.c。

将c函数文件编译成so动态库。运行gcc mylib.c -fPIC -shared -o libtest.so命令,在目录下可以看到生成的库文件libtest.so。

Python调用so库文件。首先导入ctypes,其次用CDLL加载so文件,最后调用对应的函数。将python代码保存到pydemo.py中。

执行python pydemo.py查看运行结果。

众多python培训视频,尽在python学习网,欢迎在线学习!

H. python支持C语言语法吗

楼主的问法有问题。就像汉语是否支持英语的语法一样,Python当然不支持C的语法,否则Python和C看起来就一模一样了。但是就像翻译可以让说不通语言的人交流一样,Python可以和C通过一定的interface进行“交流”。
1.你可以Bai或者Google一下SWIG,Psyco,Pyrex等等。
2.如果你是Java或者CSharp的用户,可以尝试Jython或者IronPython,这样编写扩展极其容易。
3.当然Python本身是使用C编写的,可以直接使用C扩展,但是比较难,需要了解Python的内部机制。
Plus:
Cpython就是使用C语言实现的Python,也就是原始的Python。和Jython(Java实现)、IronPython(C#实现)形成对比而已。

I. c可以调用python吗

可以的。

C中内嵌Python
新建立一个工程,首先需要将工作目录设置到Python-3.1.1PCbuild中,以获取到动态库,至于静态库的包含,Include目录的指定,那自然也是少不了的。文件中需要包含Python.h文件,这也是必须的。
接口中
Py_Initialize();
Py_Finalize();

其他的根据需求,再引入相应的python builder 即可

J. python可以用c语言吗

python也是一种语言c语言也是一种语言。。。。吗语法不同。。不能通用