python怎么写头文件

1.python编辑时可以不要头文件吗

win下py代码,头文件是#-*-encoding:utf-8-*-,是告诉python解释器, 应该以utf-8编码来解释py文件, 对于python 2.6/2.7, 如果程序中包含中文字符, 又没有这一行, 运行将会报错. 但python3.1没有这行, 也会成功运行的。

linux下,头文件需要写#! /usr/bin/env python。

加上这行, 这个py就处于了可执行模式下, (当然是针对linux类的操作系统), 这个hint, 告诉操作系统要使用哪个python解释器来执行这个py. 在linux上执行一下命令 /usr/bin/env python ,就知道这行其实是call一下python解释器.

2.如何让python调用C和C++代码

如何让python调用C和C++代码 安装python后,会有一个chm格式的python手册。

要搞明白如何让python调用C/C++代码(也就是写python的 extension),你需要征服手册中的<>厚厚的一章。在昨天花了一个小时看地头晕脑胀,仍然不知道如何写python的extension后,查阅了一些其他 书籍,最终在<>书中找到了教程。

下面记录一下如何在visual studio 2005中,写一段C/C++的MessageBox代码,然后提供后python调用,最后的结果当然是显示一个MessageBox. 1. 首先要明白的是,所谓的python扩展(也就是你提供给python的c/c++代码,不一定是c/c++代码,可以是其他语言写的代码)是一个 dll,并且这个dll放在本机python安装目录下的DLLs目录下(譬如我机器上的路径是:F:\Program Files\Python25\DLLs),假如我们接下来要写的扩展module名为mb,python调用的代码为: import mb mb.showMsg("Python's really amazing, I kindda love it!") python怎么找到我们的mb模块呢?就是上面说的,我们要生成一个mb.dll,然后拷贝到Dlls目录下面,为了区别普通的dll和python专用扩展的dll,我们的 mb.dll修改成mb.pyd(python dll) 2. 搭建环境,我们要使用python提供的c头文件和lib库来进行扩展的开发。 在vs 2005下点击菜单 "工具"->"选项", 打开选项对话框,选择"项目和解决方案->VC++目录", 然后在右边"显示以下内容的目录"得comboBox上选择"包含文件”,添加python的include目录(我的机器上是"F:\Program Files\Python25\include"),然后选择库文件,添加python的libs目录(我的机器上是"F:\Program Files\Python25\libs")。

既然扩展是一个dll,接下来我们要建立一个“动态链接库”工程,然后开始写代码: #include //python.h是包含python一些定义的头文件,在python的include目录下 /* 我的python版本是2.5, 因为安装python后它没提供debug下的lib库文件,因此你必须生成release版的dll, 想要生成dll版本的,你要到python官网上自己去下载python源代码,当然你可以继续生成release版本的dll,但dll中包含调试信息*/ #pragma comment(lib, "python25.lib") //先不管 static PyObject* mb_showMsg(PyObject* self, PyObject *args); /* 如果你的扩展是mb,那么必须实现一个initmb函数,并且从dll中导出这个函数,但我们在python中调用import mb时,python会去dll里去调用 initmb函数,这个函数告诉python我们有些什么函数,该怎么告诉python我们有一个showMsg函数呢?下面详解 */ //必须extern "C"下,这样不会在C++编译器里不会更改掉导出的函数名字,我第一次就犯了这样的错误 extern "C" __declspec(dllexport) void initmb() { /* 当调用mb.showMsg("Python's really amazing, I kindda love it!")时, 相当于你告诉python我有一个showMsg函数,我们怎么告诉python去调用我们dll里的mb_showMsg函数呢?技巧就是下面的方式, 定义一个字典数据结构,key => showMsg, value =>mb_showMsg,METH_VARARGS是函数调用方式,仔细查手册吧 */ static PyMethodDef mbMethods[] = { {"showMsg", mb_showMsg, METH_VARARGS}, {NULL, NULL, NULL} /*sentinel,哨兵,用来标识结束*/ }; //告诉python我们的模块名叫mb, 模块包含的函数都在mbMethods字典里 PyObject *m = Py_InitModule("mb", mbMethods); } /* 接下来实现核心功能showMsg */ //第一个self参数我们用不着,具体查手册,第二个参数是python传给我们的参数,它是一个python的参数tuple static PyObject* mb_showMsg(PyObject* self, PyObject *args) { //我们的showMsg函数需要的是一个字符串参数 const char* msg = NULL; /* 调用特殊参数解码python传递给我们的参数,s是string,我们传递接收参数的变量地址, 如果你的功能函数需要两个参数,在PyArg_parseTuple后面继续添加接受参数的变量地址, 这个函数的原型是类似printf的不定参数的形式 PyAPI_FUNC(int) PyArg_ParseTuple(PyObject *, const char *, 。); */ if (!PyArg_ParseTuple(args, "s", &msg)) return NULL; //调用MB int r = ::MessageBox(NULL, "hello", "Caption:Form C module", MB_ICONINFORMATION | MB_OK); //返回值 return Py_BuildValue("i", r); } 将上面这段混杂着大量注释的代码拷贝到你的编辑器里,然后编译生成mb.dll,修改后缀成mb.pyd,然后拷贝到python的DLLs目录下,打开idle(python的交互程序),写入代码: import mb mb.showMsg("Python's really amazing, I kindda love it!") 可以看到弹出来一个MessageBox。

3.如何让python调用C和C++代码

要搞明白如何让python调用C/C++代码(也就是写python的extension),你需要征服手册中的<>厚厚的一章。

在昨天花了一个小时看地头晕脑胀,仍然不知道如何写python的extension后,查阅了一些其他书籍,最终在<>书中找到了教程。1. 首先要明白的是,所谓的python扩展(也就是你提供给python的c/c++代码,不一定是c/c++代码,可以是其他语言写的代码)是一个dll,并且这个dll放在本机python安装目录下的DLLs目录下(譬如我机器上的路径是:F:/Program Files/Python25/DLLs),假如我们接下来要写的扩展module名为mb,python调用的代码为:import mbmb.showMsg("Python's really amazing, I kindda love it!")2. 搭建环境,我们要使用python提供的c头文件和lib库来进行扩展的开发。

在vs 2005下点击菜单 "工具"->"选项", 打开选项对话框,选择"项目和解决方案->VC++目录", 然后在右边"显示以下内容的目录"得comboBox上选择"包含文件”,添加python的include目录(我的机器上是"F:/Program Files/Python25/include"),然后选择库文件,添加python的libs目录(我的机器上是"F:/Program Files/Python25/libs")。既然扩展是一个dll,接下来我们要建立一个“动态链接库”工程,然后开始写代码:#include //python.h是包含python一些定义的头文件,在python的include目录下/*我的python版本是2.5, 因为安装python后它没提供debug下的lib库文件,因此你必须生成release版的dll,想要生成dll版本的,你要到python官网上自己去下载python源代码,当然你可以继续生成release版本的dll,但dll中包含调试信息*/#pragma comment(lib, "python25.lib")//先不管static PyObject* mb_showMsg(PyObject* self, PyObject *args);/*如果你的扩展是mb,那么必须实现一个initmb函数,并且从dll中导出这个函数,但我们在python中调用import mb时,python会去dll里去调用extern "C" __declspec(dllexport) void initmb(){/*当调用mb.showMsg("Python's really amazing, I kindda love it!")时, 相当于你告诉python我有一个showMsg函数,我们怎么告诉python去调用我们dll里的mb_showMsg函数呢?技巧就是下面的方式,定义一个字典数据结构,key => showMsg, value =>mb_showMsg,METH_VARARGS是函数调用方式,仔细查手册吧*/static PyMethodDef mbMethods[] = {{"showMsg", mb_showMsg, METH_VARARGS},{NULL, NULL, NULL} /*sentinel,哨兵,用来标识结束*/};//告诉python我们的模块名叫mb, 模块包含的函数都在mbMethods字典里PyObject *m = Py_InitModule("mb", mbMethods);}/*接下来实现核心功能showMsg*///第一个self参数我们用不着,具体查手册,第二个参数是python传给我们的参数,它是一个python的参数tuplestatic PyObject* mb_showMsg(PyObject* self, PyObject *args){//我们的showMsg函数需要的是一个字符串参数const char* msg = NULL;/*调用特殊参数解码python传递给我们的参数,s是string,我们传递接收参数的变量地址,如果你的功能函数需要两个参数,在PyArg_parseTuple后面继续添加接受参数的变量地址,这个函数的原型是类似printf的不定参数的形式PyAPI_FUNC(int) PyArg_ParseTuple(PyObject *, const char *, 。

);*/if (!PyArg_ParseTuple(args, "s", &msg))return NULL;//调用MBint r = ::MessageBox(NULL, "hello", "Caption:Form C module", MB_ICONINFORMATION | MB_OK);//返回值return Py_BuildValue("i", r);}将上面这段混杂着大量注释的代码拷贝到你的编辑器里,然后编译生成mb.dll,修改后缀成mb.pyd,然后拷贝到python的DLLs目录下,打开idle(python的交互程序),写入代码:import mbmb.showMsg("Python's really amazing, I kindda love it!")。

4.怎样把Python代码嵌入到C程序

这篇文章主要介绍了将Python代码嵌入C++程序进行编写的实例,尽管通常还是Python代码中调用C++程序的情况较多。

需要的朋友可以参考下 把python嵌入的C++里面需要做一些步骤 安装python程序,这样才能使用python的头文件和库 在我们写的源文件中增加“Python.h”头文件,并且链入“python**.lib”库(还没搞清楚这个库时静态库还是导出库,需要搞清楚) 掌握和了解一些python的C语言api,以便在我们的c++程序中使用 常用的一些C API函数 在了解下面的函数之前有必要了解一下**PyObject***指针,python里面几乎所有的对象都是使用这个指针来指示的。Py_Initialize()&&Py_Finalize() 在调用任何python的c函数之前需要调用的函数,“Py_Initialize”是用来初始化python模块的,推测是加载初始化加载dll的。

对应的在使用python模块之后用“Py_Finalize”来释放模块。PyImport_ImportModule() 用来载入一个python模块,这个模块就是一般的python文件。

这里需要注意的是,在加载这个模块的时候会执行模块里面所有可以执行的语句。包括import导入语句和在函数体之外的所有语句 PyObject_GetAttrString() 返回模块里面的函数 Py_BuildValue() 建立一个参数元组,一般都是用这个函数来建立元组,然后将这个元组作为参数传递给python里面的函数。

PyEval_CallObject() 调用函数,并把“Py_BuildValue”建立的元组作为参数传递给被调用的函数 源码实例 下面的实例是在c++代码中调用Python的函数,传递参数并且获取返回值 test.cpp代码 [cpp] view plain copy#include #include using namespace std; int main(int argc, char* argv[]) { Py_Initialize(); //初始化 PyObject* pModule = NULL; PyObject* pFunc = NULL; PyObject* pParam = NULL; PyObject* pResult = NULL; const char* pBuffer = NULL; int iBufferSize = 0; pModule = PyImport_ImportModule(“test_python"); if (!pModule) { cout << "get module failed!" << endl; exit (0); } pFunc = PyObject_GetAttrString(pModule, "main"); if (!pFunc) { cout << "get func failed!" << endl; cout << int(pFunc) << endl; exit (0); } pParam = Py_BuildValue("(s)", "HEHEHE"); pResult = PyEval_CallObject(pFunc,pParam); if(pResult) { if(PyArg_Parse(pResult, "(si)", &pBuffer, iBufferSize)) { cout << pBuffer << endl; cout << iBufferSize << endl; } } Py_DECREF(pParam); Py_DECREF(pFunc); Py_Finalize(); //cout << "hello" << endl; return 0; } test_python.py代码 [py] view plain copydef main(szString): return ("hello", 5)。

5.python怎么以追加的方式写文件

一、用Python创建一个新文件,内容是从0到9的整数, 每个数字占一行:

#python

>>>f=open('f.txt','w') # r只读,w可写,a追加

>>>for i in range(0,10):f.write(str(i)+'\n')

. . .

>>> f.close()

二、文件内容追加,从0到9的10个随机整数:

#python

>>>import random

>>>f=open('f.txt','a')

>>>for i in range(0,10):f.write(str(random.randint(0,9)))

. . .

>>>f.write('\n')

>>>f.close()

三、文件内容追加,从0到9的随机整数, 10个数字一行,共10行:

#python

>>> import random

>>> f=open('f.txt','a')

>>> for i in range(0,10):

. . . for i in range(0,10):f.write(str(random.randint(0,9)))

. . . f.write('\n')

. . .

>>> f.close()

四、把标准输出定向到文件:

#python

>>> import sys

>>> sys.stdout = open("stdout.txt", "w")

转载请注明出处育才学习网 » python怎么写头文件

知识

溢的繁体字怎么写的

阅读(195)

本文主要为您介绍溢的繁体字怎么写的,内容包括溢的繁体字怎么写,溢的繁体字怎么写,溢气的溢繁体字怎么写。溢拼音:yì总笔画:13画1. 充满而流出来:~流。河水四~。洋~。充~。~于言表。2. 过分:~美。~恶。~誉。3. 超出:~出此数。

知识

侠盗拼音怎么写

阅读(381)

本文主要为您介绍侠盗拼音怎么写,内容包括侠盗猎车拼音怎么写,侠盗飞车拼音怎么写,侠盗猎车拼音怎么写。电脑版侠盗猎车大写拼音:DIAN NAO BAN XIA DAO LIE CHE拼音:diàn nǎo bǎn xiá dào liè

知识

补开医疗证明怎么写

阅读(168)

本文主要为您介绍补开医疗证明怎么写,内容包括补开诊断证明要什么证件,补办合作医疗卡的证明怎么写,医保补开发票情况说明怎么写。住院病历可以通过医院的病案室,凭借相对应的证明,重新复印,相关方面的诊断证明,可以凭借病历通过诊断医生重新开

知识

手劲的拼音怎么写

阅读(194)

本文主要为您介绍手劲的拼音怎么写,内容包括手劲的读音是jin还是jing.,手的拼音怎么写,阿宝拼音手劲大拼音写好是第几声。劲jìn①(名)(~儿)力气:用~|手~儿。②(名)(~儿)精神;情绪:鼓足干~;力争上游|我就喜欢青年人的那股冲(chònɡ)~儿。③

知识

新办的拼音怎么写

阅读(149)

本文主要为您介绍新办的拼音怎么写,内容包括新造的拼音怎么写,申请的汉语拼音格式怎么写,新农村办公室的拼音。君的拼音[jūn]兴的解释[xīng] 1. 举办,发动:~办。~工。~学。~建。~叹(发出感叹声,如“望洋~~”)。百废待~。2. 起

知识

家风简介怎么写

阅读(213)

本文主要为您介绍家风简介怎么写,内容包括优良家风的主要事迹简介200字,优良家风主要事迹介绍怎么写,传家宝.家风家训故事展示台怎么写。现在,我已经步入高中,成为一名高中生,早已养成了乐于助人、艰苦朴素等好习惯。仔细想想,这些都和我们家的

知识

教师节英语贺卡怎么写

阅读(181)

本文主要为您介绍教师节英语贺卡怎么写,内容包括教师节英语贺卡怎么写,教师节英语贺卡祝福语,教师节给英语老师的贺卡应该怎么写。A sweet and lovely gift to my favorite teacher.献上一份甜蜜又可爱的礼物给我最敬爱的老师Y

知识

荡秋千的日记怎么写

阅读(157)

本文主要为您介绍荡秋千的日记怎么写,内容包括《荡秋千》的作文怎么写,数学日记荡秋千怎么写,写一篇荡秋千的日记荡秋千时有什么感受。坐在秋千上,我感到心在飞翔,让我忘记了一切的事情,只有我,飞翔在这天空下,飞翔…… 题记 面对我眼前的那

知识

夫妻婚姻证明怎么写

阅读(149)

本文主要为您介绍夫妻婚姻证明怎么写,内容包括夫妻关系证明书怎么写,夫妻关系证明怎么写,夫妻关系证明信怎么写。证明需要这样须持有关证件及证明材料,向原婚姻登记管理所在区县民政局的婚姻登记管理机关提出申请。本人户口证明(户口卡或户籍

知识

教师成长记录表怎么写

阅读(180)

本文主要为您介绍教师成长记录表怎么写,内容包括成长记录册教师评语怎么写,成长记录怎么写,成长记录怎么写。综合性评价评语 表现较好、成绩较好: xx同学在校表现较好,能自觉遵守学校的各项规章制度。上课专心听讲,积极思考,学习成绩良好。望

知识

念字的笔画顺序怎么写

阅读(156)

本文主要为您介绍念字的笔画顺序怎么写,内容包括念的笔画顺序怎么写,念的笔画顺序怎么写的,汉字的字,它的笔顺是怎么写。上的拼音:shàng shǎng 笔顺、笔画:竖、横、横、基本释义:[shàng]:1.位置在高处的,与“下”相对:楼~。~边。 2.次

知识

数据库保存的路径怎么写

阅读(144)

本文主要为您介绍数据库保存的路径怎么写,内容包括如何用数据库存放图片的路径,如何用数据库存放图片的路径,数据库里图片的路径的格式应该怎么写。原来你是做网站啊,呵呵,Dreamweaver 是不能胜任的,你需要写个VBS,你也可以在网上直接下一个现

知识

英文换行怎么写

阅读(473)

本文主要为您介绍英文换行怎么写,内容包括写英文作文单词长,换行怎么写,英文单词换行,英语单词换行规则在写英语作文时,当遇到换行时,也就是这一行写。换行规则在下面。如果不确定是否换得正确的话,干脆就空出来,整个单词放到下一行写。只要

知识

曹全碑勇字怎么写

阅读(284)

本文主要为您介绍曹全碑勇字怎么写,内容包括勇字行书写法,勇字的各种写法例隶书写法,勇敢的勇字怎么写。

知识

java头文件怎么写

阅读(265)

本文主要为您介绍java头文件怎么写,内容包括java都头文件,以及什么时候用,java语言中要使用函数Math头文件应该怎样写急~~,为什么java不用写头文件。Math类属于java.lang包中的函数,所以在使用的过程中,不需要导入这个库,可以直接使用的。pack

知识

python中ifelse语句怎么写

阅读(178)

本文主要为您介绍python中ifelse语句怎么写,内容包括python编程for循环中ifelse怎么写,以下代码怎么用python的ifelse语句改写,python语言中if与else是如何匹配的。python里不能用括号来表示语句块,也不能用开始/结束标志符来表示,而是靠缩进

知识

mac怎么写python

阅读(220)

本文主要为您介绍mac怎么写python,内容包括mac上用xcode怎么写python爬虫,大家在mac系统都用什么编辑器写python程序,mac自带python怎么打开。(1)mac自带的python安装在/usr/bin/python目录下。(2)进入终端直接键入python即可进2113入交互

知识

vim怎么写python

阅读(244)

本文主要为您介绍vim怎么写python,内容包括打算用vim写Python各位指点下,非常新的手请教vim编写python的问题,如何在linux下写python脚本。:w保存在当前目录下:q退出vim:wq保存并退出退出vim后,输入pwd显示当前目录知道了当前目录后,打开文件

知识

pythonelse语句怎么写

阅读(230)

本文主要为您介绍pythonelse语句怎么写,内容包括pythonif语句怎么写,python编程for循环中ifelse怎么写,以下代码怎么用python的ifelse语句改写。s = [a, b, c, d]s[s.index(c)] = chineseprint sprint d * 80for index,

知识

头文件和源文件怎么写

阅读(221)

本文主要为您介绍头文件和源文件怎么写,内容包括C语言中头文件和源文件写法有什么区别,C语言中头文件和源文件写法有什么区别,源文件和头文件的关系。相同点:头文件与源代码都是源文件,都用纯文本文件存储,都需要遵照C/C++语言规范来写,都可以

知识

python的头文件怎么写

阅读(190)

本文主要为您介绍python的头文件怎么写,内容包括python中如何引用头文件,如何在python中使用C的头文件,如何在python中使用C的头文件。win下py代码,头文件是#-*-encoding:utf-8-*-,是告诉python解释器, 应该以utf-8编码来解释py文件,

知识

pythonifelse语句怎么写

阅读(188)

本文主要为您介绍pythonifelse语句怎么写,内容包括以下代码怎么用python的ifelse语句改写,python编程for循环中ifelse怎么写,以下代码怎么用python的ifelse语句改写。python里不能用括号来表示语句块,也不能用开始/结束标志符来表示,而是靠缩

[/e:loop]