当前位置: 首页 > news >正文

沈阳做公司网站的公司宁波企业网站seo

沈阳做公司网站的公司,宁波企业网站seo,c 做网站实例,房地产网站大全目录 1.直接调用python语句 头文件引用 2.调用无参有参函数 1、调用无参函数 1.建立nopara.py文件 2.使用c语言根据上面流程进行调用 2、调用有参函数 1.建立nopara.py文件 2.使用c语言根据上面流程进行调用 C语言调用python需要我们已经安装好了libpython3的 dev依赖…

目录

1.直接调用python语句

头文件引用 

2.调用无参有参函数

1、调用无参函数

1.建立nopara.py文件

 2.使用c语言根据上面流程进行调用

2、调用有参函数 

1.建立nopara.py文件

 2.使用c语言根据上面流程进行调用


C语言调用python需要我们已经安装好了libpython3 dev依赖库,如果还没安装的可以看我之前的文档搭建python编译环境-CSDN博客

1.直接调用python语句

  • 头文件Python.h,这是Python API的头文件,用于访问Python对象和函数
  • Py_Initialize();函数初始化Python解释器
  • PyRun_SimpleString();函数可以执行一段简单的Python代码,例如打印"funny"。需要传递一个字 符串作为参数,表示要执行的Python代码,print ('funny')这么一个Python代码字符串。
  • Py_Finalize()函数关闭Python解释器,并释放资源。
#include "Python.h"
int main()
{Py_Initialize(); // 初始化PyRun_SimpleString("print ('happy')");Py_Finalize(); //释放资源
}

运行这个程序我们要使用以下命令进行编译(我的python版本是Python 3.10) 

gcc simpledemo.c -o simpledemo -I /usr/include/python3.10 -lpython3.10//编译
./simpledemo//运行

头文件引用 

/usr/include :Linux系统编程往往需要引用c头文件,linux下,头文件一般存储到/usr/include 

若头文件在此文件夹内,相对路径直接引入即可

#include<stdio.h>
#include<netient/ip.h>

若在其他文件夹,gcc编译需要声明-I指定路径 

gcc -I /usr/xxx/include yyy.c

 运行结果

2.调用无参有参函数

关于sys.path的用法及介绍可以看这篇博文

sys.path用法介绍-CSDN博客

1、调用无参函数

  1. 包含Python.h头文件,以便使用Python API
  2. 使用void Py_Initialize()初始化Python解释器,
  3. 使用PyObject *PyImport_ImportModule(const char *name)PyObject *PyObject_GetAttrString(PyObject *o, const char *attr_name)获取sys.path对象,并利用 int PyList_Append(PyObject *list, PyObject *item)将当前路径.添加到sys.path中,以便加载当前的Python模块(Python文件即python模块) 
  4. 使用PyObject *PyImport_ImportModule(const char *name)函数导入Python模块,并检查是否有错误。
  5. 使用PyObject *PyObject_GetAttrString(PyObject *o, const char *attr_name)函数获取 Python函数对象,并检查是否可调用。
  6. 使用PyObject *PyObject_CallObject(PyObject *callable, PyObject *args)函数调用 Python函数,并获取返回值。
  7. 使用void Py_DECREF(PyObject *o)函数释放所有引用的Python对象。
  8. 结束时调用void Py_Finalize()函数关闭Python解释器。

第三步可以改成这两句获取sys.path对象和添加当前路径到sys.path中

    PyRun_SimpleString("import sys");

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

1.建立nopara.py文件
#nopara.py文件
def say_funny():print('funny')
 2.使用c语言根据上面流程进行调用
#include <Python.h>int main(){Py_Initialize();//初始化python解释器,他会加载我们python的编译环境PyObject *pyob = PyImport_ImportModule("sys");//获取sys模块PyObject *list = PyObject_GetAttrString(pyob,"path");//获取sys.path对象PyList_Append(list,PyUnicode_FromString("."));//将当前路径添加到sys.path中PyObject *mode = PyImport_ImportModule("nopara");//导入python模块,就是导入要执行的python文件if(!mode){PyErr_Print();printf("ERROR:mode not!\n");}PyObject *pFunc = PyObject_GetAttrString(mode,"say_funny");if(!pFunc|| !PyCallable_Check(pFunc)){PyErr_Print();printf("ERROR:pFunc not!\n");}PyObject *pValue = PyObject_CallObject(pFunc,NULL);if(!pValue){PyErr_Print();printf("ERROR:pValue not!\n");}Py_DECREF(pValue);Py_DECREF(pFunc);Py_DECREF(mode);Py_Finalize();return 0;
}

2、调用有参函数 

其实调用有参函数与无参函数的区别只在我们有没有传参,如果有返回值我们就需要获取返回值

  1. 包含Python.h头文件,以便使用Python API
  2. 使用void Py_Initialize()初始化Python解释器,
  3. 使用PyObject *PyImport_ImportModule(const char *name)PyObject *PyObject_GetAttrString(PyObject *o, const char *attr_name)获取sys.path对象,并利用 int PyList_Append(PyObject *list, PyObject *item)将当前路径.添加到sys.path中,以便加载 当前的Python模块(Python文件即python模块)
  4. 使用PyObject *PyImport_ImportModule(const char *name)函数导入Python模块,并检查是否有错误。
  5. 使用PyObject *PyObject_GetAttrString(PyObject *o, const char *attr_name)函数获取 Python函数对象,并检查是否可调用。
  6. 使用PyObject *Py_BuildValue(const char *format, ...)函数将C类型的数据结构转换成 Python对象,作为Python函数的参数,没有参数不需要调用
  7. 使用PyObject *PyObject_CallObject(PyObject *callable, PyObject *args)函数调用 Python函数,并获取返回值。
  8. 使用int PyArg_Parse(PyObject *args, const char *format, ...)函数将返回值转换为C类 型,并检查是否有错误,没有返回值时不需要调用。
  9. 使用void Py_DECREF(PyObject *o)函数释放所有引用的Python对象。
  10. 结束时调用void Py_Finalize()函数关闭Python解释器。

第三步也可以自行更改

1.建立nopara.py文件
#nopara.py文件
def say_funny(category):print(category)return category
 2.使用c语言根据上面流程进行调用
int main(){Py_Initialize();//初始化python解释器,他会加载我们python的编译环境// PyObject *pyob = PyImport_ImportModule("sys");//获取sys模块// PyObject *list = PyObject_GetAttrString(pyob,"path");//获取sys.path对象// PyList_Append(list,PyUnicode_FromString("."));//将当前路径添加到sys.path中PyRun_SimpleString("import sys");PyRun_SimpleString("sys.path.append('./')");PyObject *mode = PyImport_ImportModule("nopara");//导入python模块,就是导入要执行的python文件if(!mode){PyErr_Print();printf("ERROR:mode not!\n");}//获取python函数对象,并检查是否可被调用PyObject *pFunc = PyObject_GetAttrString(mode,"say_funny");if(!pFunc|| !PyCallable_Check(pFunc)){PyErr_Print();printf("ERROR:pFunc not!\n");}char *p = "happy day!!!";PyObject* pArgs = Py_BuildValue("(s)",p);//调用python函数,并获取其返回值,就是执行那个函数PyObject *pValue = PyObject_CallObject(pFunc,pArgs);if(!pValue){PyErr_Print();printf("ERROR:pValue not!\n");}char *result = NULL;if (!PyArg_Parse(pValue, "s", &result)){PyErr_Print();printf("Error: parse failed\n");}printf("c=%s\n",result);//释放所有引用的python对象Py_DECREF(pValue);Py_DECREF(pFunc);Py_DECREF(mode);//关闭python解释器Py_Finalize();return 0;
}

 使用以下代码进行编译运行

 gcc -o pymode02_2 pymode02.c -I /usr/include/python3.10/ -lpython3.10sudo ./pymode02_2 

运行结果 

http://www.hkea.cn/news/525706/

相关文章:

  • 专业做网站的公司疫情放开最新消息今天
  • 不用写代码做网站软件长沙优化网站
  • o2o商城网站建设方案广告策划案优秀案例
  • 日照做网站的那家做的好百度网页链接
  • 建设云个人证件查询系统上海seo培训
  • 网站流量提供商杭州seo排名
  • 做装饰工程的在什么网站投标自建站
  • 地球人--一家只做信誉的网站帮忙推广的平台
  • 网站建设外包协议天津网站排名提升
  • 邯郸教育行业网站建设百度推广代理商查询
  • 政府网站有哪些网站seo最新优化方法
  • 做广告牌子seo外链工具
  • 微信页面设计网站兰州网络推广技术
  • 上门做网站搜狗站长工具
  • wordpress用户邮箱验证码百度seo搜索引擎优化培训
  • 360极速怎么屏蔽网站新闻热点大事件
  • 购物app开发价格表站长工具seo排名
  • 微餐饮网站建设营销型网站建设方案
  • 高端网站建设公司好不好2020国内搜索引擎排行榜
  • 网站建设服务公司选哪家比较好?苏州优化收费
  • 中国建设银行河南省分行网站推广信息哪个平台好
  • 网站建设官网免费模板杭州seo优化
  • 绍兴网站建设谷歌搜索引擎在线
  • 网站的会员认证怎么做黑龙江新闻头条最新消息
  • 做网站如何分工百度推广登录平台客服
  • 网站建设如何提案万网域名注册信息查询
  • 创意二维码制作网站企业网络营销推广案例
  • 论坛型网站怎么做百度高级检索入口
  • 做百度移动网站排搜素引擎优化
  • 公司创建一个网站需要多少钱想做百度推广找谁