python调用c语言函数_从Python调用C函数
python调用c语言函数
We can call a C function from Python program using the ctypes module.
我们可以使用ctypes模块从Python程序调用C函数。
从Python调用C函数 (Calling C Function from Python)
It involves the following steps:
它涉及以下步骤:
- Creating a C file (.c extension) with the required functions使用所需功能创建C文件(扩展名为.c)
- Creating a shared library file (.so extension) using the C compiler.使用C编译器创建共享库文件(扩展名为.so)。
- In the Python program, create a ctypes.CDLL instance from the shared file.在Python程序中,从共享文件创建一个ctypes.CDLL实例。
- Finally, call the C function using the format
{CDLL_instance}.{function_name}({function_parameters})
.最后,使用格式{CDLL_instance}.{function_name}({function_parameters})
调用C函数。
步骤1:创建具有某些功能的C文件 (Step 1: Creating a C File with some functions)
#include <stdio.h>int square(int i) {return i * i;
}
We have a simple C function that will return the square of an integer. I have saved this function code in the file named my_functions.c.
我们有一个简单的C函数,该函数将返回整数的平方。 我已将此功能代码保存在名为my_functions.c的文件中。
步骤2:创建共享库文件 (Step 2: Creating the Shared Library File)
We can use the following command to create the shared library file from the C source file.
我们可以使用以下命令从C源文件创建共享库文件。
$ cc -fPIC -shared -o my_functions.so my_functions.c
C File and Shared Library File
C文件和共享库文件
步骤3:从Python程序调用C函数 (Step 3: Calling C Function from Python Program)
>>> from ctypes import *
>>> so_file = "/Users/pankaj/my_functions.so"
>>> my_functions = CDLL(so_file)
>>>
>>> print(type(my_functions))
<class 'ctypes.CDLL'>
>>>
>>> print(my_functions.square(10))
100
>>> print(my_functions.square(8))
64
>>>
Calling C Function From Python
从Python调用C函数
If you change the C program file, you will have to regenerate the shared library file.
如果更改C程序文件,则必须重新生成共享库文件。
结论 (Conclusion)
The python default implementation is written in C programming and it’s called CPython. So it’s not very uncommon to use C functions in a python program. In this tutorial, we learned how to easily call C functions in a python program.
python默认实现是用C编程编写的,称为CPython。 因此,在python程序中使用C函数并不是很常见。 在本教程中,我们学习了如何在python程序中轻松调用C函数。
翻译自: https://www.journaldev.com/31907/calling-c-functions-from-python
python调用c语言函数
python调用c语言函数_从Python调用C函数相关推荐
- python是动态语言图片_利用python图片生成,需10几行代码,生成的动态表情包(小黄鸭)...
小编找到了10几行的,好玩的动态表情包生成的代码.分享分享! 这个程序怎么做呢?不要急,来听我给大家分析分析. 工具:程序环境 语言:Python 3.6 编辑器:Pycharm 程序步骤 实现字符动 ...
- python第一个发行版本由c语言实现_【Python】讲真,你知道Python咋来的吗?
Python诞生在一个圣诞节 Python诞生于1989年的一个圣诞节,其创作者Guido van Rossum为了打发圣诞节假期的无聊,便开始了Python语言的编写.Python第一个发行版本是在 ...
- python与c语言在语法上的区别-Python与C语言基础对比(Python快速入门)
代码较长,建议使用电脑阅读本文. 10分钟入门Python 本文中使用的是Python3 如果你曾经学过C语言,阅读此文,相信你能迅速发现这两种语言的异同,达到快速入门的目的.下面将开始介绍它们的异同 ...
- python是c语言写的吗-python是c语言开发的吗
python是c语言开发的吗? python是c语言开发的. Python是完全面向对象的语言.函数.模块.数字.字符串都是对象.并且完全支持继承.重载.派生.多重继承,有益于增强源代码的复用性.Py ...
- C语言试题三十三之比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。
1. 题目 请编写函数function,它的功能是:比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串.若两个字符串长度相同,则返回第一个字符串. 2 .温馨提示 ...
- 25.请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字 符串。
25.请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串.若两个字符串长度相同,则返回第一个字 符串. 例如,输入:beijing ...
- python中如何调用函数_我写了一个函数,如何在python中调用
匿名用户 1级 2015-03-06 回答 Python的特色简单 Python是一种代表简单主义思想的语言.阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Pyth ...
- python一个函数调用另一个函数_在Python中将函数作为另一个函数的参数传入并调用的方法...
在Python中,函数本身也是对象,所以可以将函数作为参数传入另一函数并进行调用 在旧版本中,可以使用apply(function, *args, **kwargs)进行调用,但是在新版本中已经移除, ...
- python调用matlab函数_从python调用MATLAB函数
我知道这是一个老问题,已经得到答复. 但是我一直在寻找相同的东西(对于Mac),发现有很多选择与matlab交互的方法和成熟度不同. 这是我发现的: pymat 使用matlab引擎(libeng)进 ...
最新文章
- windows服务器下部署多台tomcat
- Bitmap的使用(三)
- Laravel 中 Controller访问Model函数/常量
- linux查看主机端口进程命令
- PYPL 4 月排行:Python 最流行,Java 还行不行?
- [css] 元素竖向的百分比设置是相对容器的高度吗?
- cmd 调用JLink.exe 下载程序
- C# Tostring 格式化输出字符串全解
- linux维护rpm 数据库,Linux运维知识之linux rpm命令详细介绍
- Lync 客户端功能对比之IM功能
- php生成站点地图,php生成百度站点地图sitemap.xml
- Android Picasso教程
- Patternodes 3 for Mac(创建图形矢量模式工具)
- cbv、resful、APIView和序列化组件
- java 图片水印旋转,Java实现 图片水印或者文字水印详解
- 拉格朗日插值的优缺点_如何直观地理解拉格朗日插值法?
- 廊坊金彩教育:店铺运营技巧思路
- 用c++设计 公司职工的信息管理程序 求大神!!
- 2013年 雷诺 Renault Zoe | 警告信息 “停车: 电力故障危险”
- Python爬虫系列之爬取微信公众号新闻数据
热门文章
- js-JavaScript高级程序设计学习笔记2
- jquery mobile将页面内容当成弹框进行显示
- C++ 内存分配 学习笔记
- [转载] Python与其他语言结合的参数转换函数PyArg_ParseTuple()
- [转载] java 中 date类型详解
- webuploader
- IIS出现 分析器错误消息: 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的...
- Java知多少(84)图形界面之布局设计
- 微软职位内部推荐-Software Engineer
- DevExpress XtraGrid网格控件示例四:初始化新建行的单元格