APP下载

基于Python的混合语言编程及其实现研究

2022-07-01卢绍兵

科技资讯 2022年14期
关键词:数据分析软件

卢绍兵

摘  要:Python属于ABC语言替代品,能够为语言编程提供高效、高级的数据结构,有效面对对象进行编程操作。Python编程语言的设计风格一般比较清晰统一,这使得Python编程语言能够简单易懂,维护起来也十分便利,所以被很多大众所接受和喜欢,应用推广速度比较快。Python是目前一种常用的脚本语言,在混合语言编程的软件开发中具有很好的应用效果。该文对Python编程语言进行论述,研究Python编程语言的语言风格、语言优点等,并探究其在混合语言编程中的应用和实现。

关键词:Python   混合语言编程   数据分析   软件

中图分类号: TP313    文献标识码:A   文章编号:1672-3791(2022)07(b)-0000-00

Research on Mixed language Programming Based on Python and Its Implementation

LU Shaobing

(Yunnan business college, Kunming, Yunnan Province,  651701 China)

Abstract: Python is an alternative to ABC language, which can provide efficient and advanced data structure for language programming and effectively program objects. The design style of Python programming language is generally clear and unified, which makes python programming language easy to understand and convenient to maintain. Therefore, it is accepted and liked by many people, and its application and promotion speed is relatively fast. Python is a commonly used scripting language, which has a good application effect in the software development of mixed language programming. This paper discusses the python programming language, studies the language style and language advantages of Python programming language, and explores its application and implementation in mixed language programming.

Key Words: Python; Mixed language programming; Data analysis; Software

1.1语言风格

Python属于ABC语言替代品,能够为语言编程提供高效、高级的数据结构,有效面对对象进行编程操作[1]。Python编程语言的设计风格一般比较清晰统一,这使得Python编程语言能够简单易懂,维护起来也十分便利,所以被很多大众所接受和喜欢,应用推广速度比较快[2]。Python编程语言开发以特定的问题为基础,选择最有效的方式来解决问题[3]。Python编程语言具有一定的限制性,在编程中,不良的编程习惯会造成编程不能通过编译[4]。例如:IF语句的下一行不向右缩进,在Python编程语言中,缩进规是至关重要的一部分,相对于其他语言来说,Python编程语言最突出的特点是模块界限,这主要是每行的首字符位置来决定的,但是其他语言,例如C语言等,则是通过“{}”来对于模块界限进行确定。

1.2语言优点

Python编程语言的优点比较多,使用Python编程语言简单易学,Python编程语言可以免费使用,编程速度快,具有一定的可移植性和解释性,具备一定的拓展性和可嵌入性[5]。

Python编程语言是一种简单的思想语言,具有良好阅读基础的Python编程员在对Python编程的阅读中,就像是在阅读英语一样,可以帮助编程员把握关键问题,解决问题,而不是研究语言本身。因为Python编程语言具有一定的简单性,清楚明了,容易理解,所以学习Python编程语言难度也相对低一些,在Python编程语言中,包含说明文档,能够帮助理解[6]。Python编程语言底层通过C语言编写,很多标准款、第三方库都是借助C语言进行编写,所以运行速度比较快。此外,Python編程语言也是FLOSS的重要祖晨部分,应用这可以自由发布软件拷贝,对相应源代码进行阅读和改动,且能够将其应用到软件中。开源本质让Python编程语言可以被移植到更多的平台中。Python编程语言是编译性语言,能够将源文件转换到用户计算机所使用的语言中。这一过程通过编译器和不同标记、选项等共同完成。在对程度进行运行中,连接软件对用户程序复制和内存运行都有一定帮助。借助Python编程语言编写的程序不需要进行二进制编译就可以在源代码中进行相应程序的运行。计算机内部,Python编程语言解释器可以将源代码进行转换,使其成为字节码中间形式,再将其翻译成计算机语言运行,能够让Python编程语言应用变得更加简单,程序移植也更加简单。Python编程语言支持面向过程编辑,也能够支持面向对象编程,在向过程中语言中,程序通过过程或使用重用代码函数构建。在面向对象语言中,Python编程语言包含功能和数据组合对象。Python编程语言的可拓展性能够让语言嵌入到其他语言中,可以提供必要的基本功能。

2.基于Python的混合语言编程

2.1混合语言编程软件结构框架

Python编程语言应用到混合语言编程中,一种是进行拓展,另一种是通过嵌入来实现。其中,拓展是通过从C语言实现对Python的拓展,需要从相应编程语言中进行对应模块功能的调取和应用。而嵌入的实现主要是通过Python解释器来实现的,通过Python解释器在相应程序中应用来实现,这样相应的应用程序可以解释Python的脚本程序,确保编程目标的实现。

2.2典型程序结构

在C语言源程序中,Python拓展模块具备一定的代表性,例如:Python.h头文件,文件在Python的所有内部数据结构以及函数原型都可以进行定义;但是同时也需要定义一个例外对象,这一个对象主要是针对例外对象来说的。这一模块主要是对函数的实现方式进行定义,通过函数来将参数表示的Python对象进行转换,使其如何C语言程序的格式要求,在处理好格式后,转换成Python对象,最后传回Python解释器。如果这一过程中出现异常问题,则可以借助已经设定的例外对象实现返回。在源程序中,需要对拓展模块定义的函数名以及函数实现对应关系列表,以此来实现相应拓展模块的函数初始化操作。除了一般的手工代码编写途径,还能选择通过自动化工作来实现,可以借助SWIG,通过对现有的代码进行扫描,自动生成需要的代码,这样做也可以在一定程度上促进遗留代码转化效率提升。现阶段,SWIG在很多大型科学计算项目开发中都有很好的应用效果。相对于一般模块化的拓展来说,Python中嵌入应用程序,可以结合具体的嵌入目的差异来实现,为用户提供多种选择,这些嵌入还会对应用程序专用拓展产生影响,所以,嵌入的实现相对更为繁琐,其主要原理则是通过Python提供的C API来实现数据格式转化,借助例外处理的方式来实现程序设计目标。

2.3 Python与C/C++实现混合编程的程序设计要点

Python自身存在一定的不足,Ctypes 是一个为 Python 准备的外部函数库。它提供兼容C的数据类型,并允许调用DLL或共享库中的函数。通过它,可以使用纯粹的 Python 包装这些函数库。下面就分享一部分Python与C/C++实现混合编程的程序设计:

在vs2017新建一个空文件testpy3,新建文件test.c和math_test.py

//test.c

#include <Python.h>

int main(int argc, char *argv[])

{

//设定参数值

int a=3;

int b=6;

//初始化

Py_SetProgramName(argv[0]);

Py_Initialize();

//测试python3的打印语句

PyRun_SimpleString("print('Hello Python!')\n");

//执行import语句,把当前路径加入路径中,为了找到math_test.py

PyRun_SimpleString("import os,sys");

PyRun_SimpleString("sys.path.append('./')");

//测试打印当前路径

PyRun_SimpleString("print(os.getcwd())");

PyObject *pModule;

PyObject *pFunction;

PyObject *pArgs;

PyObject *pRetValue;

//import math_test

pModule = PyImport_ImportModule("math_test");

if(!pModule){

printf("import python failed!!\n");

return -1;

}

//对应math_test.py中的def add_func(a,b)函数

pFunction = PyObject_GetAttrString(pModule, "add_func");

if(!pFunction){

printf("get python function failed!!!\n");

return -1;

}

if(!pModule){

printf("import python failed!!\n");

return -1;

}

Py_Finalize();

//方便查看

while(1);

return 0;

}

通過Python与C/C++实现混合编程,用C或C++改写关键部分,可以提高运行速度。

参考文献

[1] 刘曜硕.Python与R语言混合编程方法的实践[J].电子技术与软件工程,2021(5):40-41.

[2] 韩婷,刘畅,赵若晗,等.基于C语言和MATLAB的混合编程在医学图像处理课程中的应用[J].软件,2018,39(10):26-29.

[3]  宫薇薇,齐向春,裴世廉. Python与R语言混合编程方法的研究和应用[J]. 计算机应用与软件,2018,35(1):28-31.

[4] 潘俊男.三种语言在N体模拟中的计算效率比较研究[D]. 大理:大理大学,2021.

[5] 刘正. 积木式python编程系统的研究与实现[D]. 北京:北京邮电大学,2020.

[6] 耿颖.使用Python语言的GUI可视化编程设计[J]. 单片机与嵌入式系统应用,2019,19(2):20-22,44.

猜你喜欢

数据分析软件
有趣的识花软件
新常态下集团公司内部审计工作研究
浅析大数据时代对企业营销模式的影响
即时通讯软件WhatsApp
丰富多彩的Android软件
如何在智能手机中安装软件