⑴ python脚本可以嵌入易语言程序吗
是已经包含了,但不是以可执行文件的形式存在,而是以动态链接库的形式被调用,你可以在安装目录里搜索sqlite3,会找到sqlite3.dll
⑵ 求助 关于c程序中嵌入Python的问题
在C/C++中嵌入Python也比较简单,首先需要在VC中添加Python的include文件目录和lib文件目录:
VC6.0下,打开 tools->options->directories->show directories for,将Python安装目录下的inlude目录添加到inlude files项中,将libs目录添加到library files项中。
VC2005下,打开tools->options->项目和解决方案->VC++目录,然后做相同工作。
代码如下:
//在debug下执行出错,“无法找到python31_d.lib文件”,后查到原因是:在debug下生成必须要有python31_d.lib文件,否则只能在release下生成
#include <python.h>
int main()
{
Py_Initialize();
PyRun_SimpleString("Print 'hi, python!'");
Py_Finalize();
return 0;
}
Py_Initialize函数原型是:void Py_Initialize(),在嵌入Python脚本时必须使用该函数,它初始化Python解释器,在使用其他的Python/C API之前必须先调用该函数。可以使用Py_IsInitialized函数判断是否初始化成功,成功返回True。
PyRun_SimpleString函数原型是int PyRun_SimpleString(const char *command),用来执行一段Python代码。注意:是否需要维持语句间的缩进呢?
Py_Finalize函数原型是void Py_Finalize(),用于关闭Python解释器,释放解释器所占用的资源。
PyRun_SimpleFile函数可以用来运行".py"脚本文件,函数原型如下:
int PyRun_SimpleFile(FILE *fp, const char *filename);
其 中fp是打开的文件指针,filename是要运行的python脚本文件名。但是由于该函数官方发布的是由visual studio 2003.NET编译的,如果使用其他版本的编译器,FILE定义可能由于版本原因导致崩溃。同时,为简便起见可以使用如下方式来代替该函数:
PyRun_SimpleString("execfile(‘file.py’)"); //使用execfile来运行python文件
Py_BuildValue()用于对数字和字符串进行转换处理,变成Python中相应的数据类型(在C语言中,所有Python类型都被声明为PyObject类型),函数原型如下:
PyObject *Py_BuildValue(const char *format, …..);
PyString_String()用于将PyObject*类型的变量转换成C语言可以处理的char*型,具体原型如下:
char* PyString_String(PyObject *p);
列表操作函数:
PyObject * PyList_New(Py_ssize_t len);
int PyList_SetItem(PyObject *list, Py_ssize_t index, PyObject *item);
PyObject * PyList_GetItem(PyObject *list, Py_ssize_t index);
int PyList_Append(PyObject *list, PyObject *item);
int PyList_Sort(PyObject *list);
int PyList_Reverse(PyObject *list);
Py_ssize_t PyList_Size(PyObject *list);
元组操作函数:
int PyTuple_New(Py_ssize_t len);
int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o);
PyObject * PyTuple_GetItem(PyObject *p, Py_ssize_t pos);
int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize); //注意是**指针
字典操作函数:
PyObject * PyDict_New();
int PyDict_SetItem(PyObject *p, PyObject *key, PyObject *val);
int PyDict_SetItemString(PyObject *p, const char *key, PyObject *val);
PyObject* PyDict_GetItem(PyObject *p, PyObject *key);
PyObject* PyDict_GetItemString(PyObject *p, const char *key);
//与PyDict_SetItemString对应
int PyDict_DelItem(PyObject *p, PyObject *key);
int PyDict_DelItemString(PyObject *p, char *key);
//与PyDict_SetItemString对应
int PyDict_Next(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue);
PyObject* PyDict_Items(PyObject *p);
PyObject* PyDict_keys(PyObject *p);
PyObject* PyDict_Values(PyObject *p);
在C/C++中使用Python对象应正确地处理引用计数问题,否则容易导致内存泄漏。当使用Python/C API中的函数创建列表、元组、字典等后,在对其完成操作后应该使用Py_CLEAR()和Py_DECREF()等宏来销毁这些对象。原型如下:
void Py_CLEAR(PyObject *o);
void Py_DECREF(PyObject *o);
其中,对于Py_CLEAR函数,参数可以为NULL指针,表示不进行任何操作,但是Py_DECREF函数不能为NULL指针,否则导致错误。
使用PyImport_Import()函数可以在C中导入Python模块,返回一个模块对象。函数原型为:
PyObject* PyImport_Import(PyObject *name);
PyMole_GetDict()函数可以获得Python模块中的函数列表,返回一个字典,字典中的关键字为函数名,值为函数的调用地址。原型如下:
PyObject* PyMole_GetDict(PyObject *mole);
使用PyObject_CallObject()函数和PyObject_CallFunction()函数可以在C中调用Python中的函数,原型如下:
PyObject* PyObject_CallObject(PyObject *callable_object, PyObject *args);
//args是元组形式
PyObject* PyObject_CallFunction(PyObject *callable, char *format, ……);
//format是类似”iss”这样的参数类型,后面是指定参数
可以使用PyCallable_Check(func)来判断是否可以调用函数,可以则返回True。
⑶ javascript 中能不能嵌入 python 函数
不可以,JavaScript和python语言解释器就不一样。不过python也可以写前端,Django就是python的前端框架。或者你也可以用python写服务器,让JavaScript和python进行通信即可
⑷ python能够嵌入到主程序中调试吗
1、python能做web开发么?
答:web开发与后台语言无关,只要语言能够生成html(就是字符串),再根据用户请求返回即可,java,c,php,python都可以做。
2、那常用的php,jsp,asp等是怎样生成页面的呢?
答:php,jsp等确实写在html中,但在服务器返回给浏览器的并不是这些.php,/.jsp文件,而是这些文件生成的html(字符串),python也有类似jsp的psp,但这就需要一些web服务器的特殊功能了(比如apache的mod_python模块)
3、那javascript为什么可以直接返回给浏览器?
答:浏览器想要处理服务器返回的字符串,它必须要能看懂并能按照字符串去显示,如何看懂呢?法一就是它自己有这个能力,比如现在的浏览器都能解析html、css、javascript;法二就是浏览器自己不懂,但安装的插件懂,比如flash、java applet。至于python,估计没人写这个插件了,因为用服务器端的方式已经很容易了,没这个必要。
4、python做web开发该看些什么?
答:可那你这问题感觉你对一些基础的东西、原理都没掌握,呵呵。web开发就是写个能处理http请求的web app,来一个request,处理,返回一个response,这些request、response都是字符串(符合http协议的)
先要对这些有个理解,然后的话可以看看django,这就不多说了。
(PS:一不小心写了这么多,希望对你有帮助,吃饭去了)
⑸ Python语言适不适合嵌入式开发,运行与硬件上
可以,但不适合为什么可以:可以的前提是你要在你的嵌入式设备上移植pvm。能运行pvm就能执行Python字节码。为什么不适合:嵌入式设备多大的处理能力,你知道一个一个两层的嵌套循环C和Python的效率能差两个数量级吗?再说Python的图像处理调用的是C语言写的包,你直接上C不就行了吗?
⑹ 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教程请关注环球青藤其它相关文章!
⑺ python是什么样的编程语言
由于近几年人工智能的不断发展,Python也跟着火了,因为Python是深度学习技术的主流应用编程语言。同时它的应用场景很多,被称为“胶水语言”。优妹儿就帮小伙伴们科普一下,Python这门神奇编程语言的发展趋势,以及语言特性,帮助想要学习Python的小伙伴们,更清晰的了解它。
Python第一个公开发行版发行于1991年,所以这年被当作Python的诞生年。Python源代码遵循GPL协议(通用公共许可证),这是一个开源的协议,也就是说你可以免费使用和传播它,而不用担心版权的问题。
Python是一种跨平台的计算机程序设计语言, 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,Python越来越多被用于独立的、大型项目的开发。
Python的发展趋势
上图是2020年9月的Tiobe编程社区指数(它是编程语言流行度的指标),全球编程语言热度排行榜。如果感觉上图的排行不够直观,可以看下面这张柱状图↓
从中我们能看出Python已经超越C++和C#,强势位列第三,当之无愧的解释型语言领头羊。
解释型语言是指在运行程序的时候才翻译代码,专门有一个解释器去进行翻译,每个语句都是执行的时候才翻译。解释型语言缺点是运行速度会比较低,依赖解释器,优点是跨平台性好。
而时至今日,计算机的硬件性能已经得到数量级的提高,计算能力不再是限制编程语言的最重要的因素,敏捷开发成为生产环境下对语言选择的重要因素,Python很好的满足了这一点,从而得到快速发展。
Python语言的特性
1、简单易学、明确优雅、开发速度快
简单易学:与C和Java比,Python的学习成本和难度曲线低了很多,更适合新手入门,是自底向上的技术攀爬路线。先订个小目标爬个小山,然后再往更高的山峰前进。而不像C和JAVA光语言学习本身,对于很多初学者来说就像珠穆朗玛峰一样高不可攀。
明确优雅:Python的语法非常简洁,代码量少,非常容易编写,代码的测试、重构、维护等都非常容易。一个小小的脚本,用C可能需要1000行代码、用JAVA可能要几百行,但是用Python往往只需要几十行就能实现!
开发速度快:当前互联网企业的生命线是什么?产品开发速度!如果你的开发速度不够快,在你的产品推出之前别人家的产品已经上线了,你也就没有生存空间了,这里的真实例子数不胜数。那么,Python的开发速度说第二没人敢称第一!(不欢迎辩论^_^)
2、 跨平台、可移植、可扩展、解释型、面向对象的动态语言
跨平台:Python全面支持Windows、Linux和MAC os等主流操作系统。
跨平台是指:使用不同的操作系统开发程序、运行程序,不用修改代码。
可移植:代码通常不需要多少改动就能移植到别的平台上使用。
可扩展:Python语言本身由C语言编写而成的,你完全可以在Python中嵌入C,从而提高代码的运行速度和效率。你也可以使用C语言重写Python的任何模块,从根本上改写Python。
解释型:Python语言在执行过程中由解释器逐行分析,逐行运行并输出结果。
面向对象:Python语言具备所有的面向对象特性和功能,支持基于类的程序开发。
动态语言:在运行时可以改变其结构。例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。动态语言非常具有活力。
3. “内置电池”,大量的标准库和第三方库
Python为我们提供了非常完善的基础库,覆盖了系统、网络、文件、GUI、数据库、文本处理等方方面面,这些是随同解释器被默认安装的,各平台通用,你无需安装第三方支持就可以完成大多数工作,这一特点被形象地称作“内置电池(batteries included)”。
4. 社区活跃,贡献者多,互帮互助
技术社区的存在就相当于程序员手中的指南针,没有指南针,很多时候,碰到了问题,就像无头的苍蝇只能到处乱飞,最终在茫茫的海洋中转晕致死。技术社区可以给我们对语言的学习和使用提供巨大的帮助,无论是前期的学习,还是日后的工作,只要有问题,技术社区的大牛都可以帮我们解决,有这些助力,可以帮我们更好地了解、学习和使用一门语言。技术社区同时还推动Python语言的发展方向,功能需求,促使公司企业更多的使用Python语言,招聘Python程序员。
5. 开源语言,发展动力巨大
Python是基于C语言编写的,并且使用GPL开源协议,你可以免费获取它的源代码,进行学习、研究甚至改进。众人拾柴火焰高,有更多的人参与Python的开发,促使它更好的发展,被更多的应用,形成良性循环。Python为什么会越来越火就是因为它的开放性,自由性,聚起了人气,形成了社区,有很多人在其中做贡献,用的人越来越多,自然就提高了市场占有率,企业、公司、厂家就不得不使用Python,提供的Python程序员岗位就越来越多,这就是开源的力量。
⑻ 如何使Python嵌入C++应用程序
Python容易扩展和嵌入。Python提供的许多标准模块支持C或者C++接口。Python和C可以一起工作,它可以嵌入到C或者C++的应用程序当中,因此可用Python语言为应用程序提供脚本接口,由于支持跨语言开发。
可用Python设计概念化应用程序,并逐步移植到C,使用前不必用C重写应用程序。(Jython使Python可以和Java一起工作,使开发者可以在Python里面调Java的包,也可以在Java里面使用Python的对象。还有更妙的,由于Jython的解释器完全用Java编写,因此可以在支持Java的任何平台上部署Python程序,甚至WEB浏览器也可以直接运行Python脚本。)
提出问题在某个C++应用程序中,我们用一组插件来实现一些具有统一接口的功能,我们使用Python来代替动态链接库形式的插件,这样可以方便地根据需求的变化改写脚本代码,而不是必须重新编译链接二进制的动态链接库。Python强大的功能足以胜任,但是有一些操作系统特定的功能需要用C++来实现,再由Python调用。所以,最基础地,我们需要做到:
1. 把Python嵌入到C++应用程序中,在C++程序中调用Python函数和获得变量的值;
2. 用C++为Python编写扩展模块(动态链接库),在Python程序中调用C++开发的扩展功能函数。
⑼ 怎样把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)。
⑽ python能做嵌入式开发吗
一般不支持,这是面向对对象的,嵌入式都用c或c++,这种可以直接操作寄存器的语言