C语言程序如何调用python程序

C语言程序如何调用python程序,第1张

下面是一个例子:

首先是python的一个简单函数

class Hello:

def __init__(self, x):

self.a = x

def print(self, x=None):

print(x)

def xprint():

print("hello world")

if __name__ == "__main__":

xprint()

h = Hello(5)

h.print()1

下面是C语言

#include <python3.4m/Python.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main()

{

Py_Initialize()

// 将当前目录加入sys.path

PyRun_SimpleString("import sys")

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

// 导入hello.py模块

PyObject *pmodule = PyImport_ImportModule("hello")

// 获得函数xprint对象,并调用,输出“hello world\n”

PyObject *pfunc = PyObject_GetAttrString(pmodule, "xprint")

PyObject_CallFunction(pfunc, NULL)

// 获得类Hello并生成实例pinstance,并调用print成员函数,输出“5 6\n”

PyObject *pclass= PyObject_GetAttrString(pmodule, "Hello")

PyObject *arg = Py_BuildValue("(i)", 5)

PyObject *pinstance = PyObject_Call(pclass, arg, NULL)

PyObject_CallMethod(pinstance, "print", "i", 6)

Py_Finalize()

return 0

}

编译命令如下:

gcc pyapi.c -lpython3.4m -o pyapi

方法如下。

1、打开文本编辑器,推荐editplus,notepad等,将文件保存成 .py格式,editplus和notepad支持识别python语法。脚本第一行一定要写上 #!usr/bin/python,表示该脚本文件是可执行python脚本,如果您的python目录不在usr/bin目录下,则替换成当前python执行程序的目录。

2、编写完脚本之后注意调试、可以直接用editplus调试。调试方法可自行百度。脚本写完之后,打开CMD命令行,前提是python 已经被加入到环境变量中。

3、在CMD命令行中,输入 “python” + “空格”,即 ”python “;将已经写好的脚本文件拖拽到当前光标位置,然后敲回车运行即可。

扩展资料

python和C语言的差别:

1、C语言是编译语言,Python是脚本语言,C语言会比Python快。

2、C语言中的数组,里面的都是数字,而list中可以包含很多不同的数据元素。

3、在C语言中使用那个库函数,需要引入头文件用include引入,而在python中需要引入别的模块或者函数时需要用import引入。两者的不同机制是,C语言中include是告诉预处理器,这个include指定的文件的内容,要当作本地源文件出现过,而python中的import可以通过简单的import 导入,或者是 import numpy as np。

参考资料Python_百度百科

C语言和Python语言虽然均可用于编写计算机程序,但它们在执行方式上略有不同。C语言是一种编译型语言,程序需要先经过编译器的编译过程,将源代码转换为机器语言,在计算机上运行时直接执行机器语言程序。与之不同,Python是一种解释型语言,可以直接执行Python程序,无需先按照C语言那样进行编译。Python解释器将Python代码作为输入,边解释边执行,直到程序结束。相比较而言,编译型语言的程序一般更高效,但执行之前需要额外的编译过程;而解释型语言的程序则更加灵活,但需要消耗更多的计算资源。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11473471.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存