基于Python的混合编程

全球化技术潮流的推动加快了Python的不断发展和壮大,应用范围变得非常广泛,功能多样,有多种完整成熟的架构,适于短期开发。Python 是一种解释性比较强的语言,拥有完善的标准库和接口,可以进行混合编程。下面来简单介绍一下:

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。设计具有很强的可读性,相比其他语言,Python 具有特有的语法结构。Python 支持广泛的应用程序开发,从简单的文字处理到 web 开发,以及数据库操作。Python 的特点有以下几个方面 :Python 有相对比较少的关键字,结构简单,语法定义明确。Python 代码使用空格对齐,更加便于阅读和理解。每一个模块有清晰的定义和调用说明,在软件完成以后的维护很容易。Python 的易于学习和编写使其快速地流行。经过多年的发展和标准制定,Python 提供了丰富的标准库。这些库文件安装可以通过 Python 命令进行。库文件的调用也十分简单。如果标准库中没有目标程序源码,用户可以自己通过 c 或者 C++ 自我实现。也可以通过 API 对 C 和 C++ 进行调用。Python 支持所有的商业数据库的数据接口,支持 GUI 编程。提供成熟可靠的的web 框架,简化的 web 开发的过程。不同用途或者功能的软件开发可能需要不同的语言进行编写。特定的语言提供了良好数据操作和简化后的编程逻辑。而 Python 提供了当前许多不同功能软件开发、操作的库。不同的程序,相同的语言进行实现,效率更高,兼容性更好。此外,Python 还支持机器学习和创建数学模型。

使用 Python 进行混合编程有两种方式 :扩展和嵌入。扩展是通过 C、C++ 等系统语言实现 Python 的功能模块。嵌入是将Python 解释器加载到应用程序中,使程序能够解释运行 Python语言写成的脚本。两者都需要调用 C 语言应用程序接口。

需要扩展 Python 语言的理由主要有3点:

1)添加 / 额外的(非 Python)功能,提供 Python 核心功能中没有提供的部分,比如创建新的数据类型或者将 Python 嵌入到其它已经存在的应用程序中,则必须进行扩展编译。

2)性能瓶颈的效率提升。解释型语言一般比编译型语言慢,如果某一个模块处理的数据比较多,或者会频繁的操作 IO,整个程序的运行速度会降低,形成程序的瓶颈。但是如果将所有的程序都用低级语言编写,会存在两个问题 :一是工程量太大,不符合软件开发的初衷 - 高效率 ;二是有些模块,Python 的运行效率与低级语言运行效率相差不大,不需要重新编译。

3)核心代码加密。因为Python 是解释性语言,源代码没有私密性。将核心代码由 Python语言转变为编译语言就变得很重要。

扩展的典型程序结构流程如下:

1)创建应用程序的源代码;

2)利用样板来包装代码;

3)创建 setup.py 进行编译,封装为 Python 的库;

4)通过 Python 解释器运行;

用通俗的话来说就是,首先创建程序源代码,在头文件中添加 Python.h,里面包含了 Python 定义的所有的内部数据结构和 C API 函数原型。按照程序逻辑编写文本处理函数体。通过 GCC 编译其中的主程序。然后进行模块封装,对照C语言源代码,在文件中为每个模块的每一个函数增加 Py Object*  M_func() 的包装函数。包装函数的目的是把python 的值传递给c,再把c中函数的计算结果转换成 Python对象返回给 python。将每个模块增加一个 Py Method Def Module Methods[] 的数组,为 Python解释器提供调用入口。增加模块初始化函数 void init Method()。最后就是编译测试,编写 setup.py 文件,执行 setup 文件,扩展的模块会被导入至 Python 的调用库。程序执行的时候,解释器找到模块的位置,进行调用。运行结果。在文本中找到的关键字数据,并且提取出了文本段。基本介绍完毕,请大家继续关注!!!

 

 

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术小咖龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值