Python嵌入C++详解(1)
来CSDN的时候,刚刚接触Python,那时候对Python的嵌入部分很感兴趣,只是一直没有时间来弄清其面纱,因此也一直没有使用嵌入的功能,另一个原因是我还没有真正用Python写过一个正式的有用点的东西,不过,现在回过头来继续看这一部分,发现还是挺简单的。以前想把这部分翻译出来,可是由于时间原因,也没有那精力,所以这里我会将我所探究的每个Python/C嵌入部分函数都用实例来说明,我想看代码比我解释要通俗易懂。
再说helloworld之前,先不得不提下嵌入的配置问题。
步骤:
1:请到官网下载python的安装程序,安装python(我想这步有点多余,不过还是写上吧)
2:接着你可能还需要下载python(与安装版本相同)源代码,因为我们需要在debug下编译链接生成对应的debug库,若你能在网上找到别人已经编译好的库,你也可以直接用别人的。这样得到2个debug版本的.lib和.dll
3:将python目录下的include文件夹下的文件移到编译系统的include中,然后将release和debug版本的.lib和.dll放到指定的文件夹中(lib放到编译系统lib,dll放到windows/system32/)
4:好了,配置就此完成了。
来看代码:
#include "python/python.h" //我是将python那些头文件放在我自己建的名为python的文件夹中
int main(int argc,char** argv)
{
Py_Initialize();//该函数启动python解释器,算是初始化
////////////////////////
//载入文件的方式运行指令,FILE是C标准库stdio.h文件中的一个结构,习惯C语言的应该很熟悉(不过我还是第一次使用,汗...)
FILE * fr;
fopen_s(&fr,"test.txt","r");
PyRun_SimpleFile(fr,"test.txt");
fclose(fr);
//直接运行指令,指令都是字符串,注意3.1.1版的python必须加上小括号
PyRun_SimpleString("print('Hello world,I am python!')");
///////////////////////
Py_Finalize(); //该函数关闭python解释器,算是扫尾
return 0;
}
//附带test.txt
/*
from time import time,ctime
print('Today is', ctime(time()))
*/
文章出处:DIY部落(http://www.diybl.com/course/3_program/c/c_js/20090903/173641.html)
相关文档:
Python中可以使用装饰器对函数进行装饰(或说包装),利用这个特性,可以很方便、简洁地解决一些问题,比如获得函数执行时间的问题。
首先,我们定义一个函数,如下:
def exeTime(func):
def newFunc(*args, **args2):
t0 = time.time()
print "@%s, {%s} start" % (time.strftime("%X", time.local ......
模块
一.简介
模块基本上就是一个包含了所有你定义的函数和变量的文件。为了在其他程序中重用模块,模块的文件名必须以.py为扩展名。
例如:
#!/usr/bin/python
# Filename: using_sys.py
import sys
print 'The command line arguments are:'
for i in sys.argv:
print i
print '\n ......
在讲述filter,map和reduce之前,首先介绍一下匿名函数lambda。
lambda的使用方法如下:lambda [arg1[,arg2,arg3,...,argn]] : expression
例如:
>>> add = lambda x,y : x + y
>>> add ......
Python中的异常
当你的程序中出现某些异常的状况的时候,异常就发生了。
一.处理异常
我们可以使用try..except语句来处理异常。我们把通常的语句放在try-块中,而把我们的错误处理语句放在except-块中。
例如:
#!/usr/bin/python
# Filename: try_except.py
import sys
try:
s = raw_input('E ......
1.简单的将日志打印到屏幕
import
logging
logging.
debug(
'This is debug message'
)
logging.
info(
'This is info message'
)
logging.
warning(
'This is warning message'
)
屏幕上打印:
WARNING:root:This is warning ......