易截截图软件、单文件、免安装、纯绿色、仅160KB

Python嵌入C++详解(3)

继前篇《Import Module》(http://blog.csdn.net/xiadasong007/archive/2009/09/02/4512797.aspx),继续分析嵌入部分基础知识。这次不多说,有什么问题记得多查英文资料,国内的这方面知识少
还是来看代码,写完我就睡觉了~
 
#include "python/python.h"
#include <iostream>
using namespace std;
int main(int argc,char** argv)
{
 PyObject *pModule, *pClass,*pStuObj,*pFunc;
 Py_Initialize();
 ////////////////
 //载入模块stu.py
 pModule = PyImport_ImportModule ("stu");
 //从模块中得到类Student
 pClass = PyObject_GetAttrString (pModule, "Student");
 //生成一个学生对象jack,注意3.1版本必须加上小括号:(s),否则会出错
 //PyObject_CallObject和另外一个常用的PyEval_CallObject用法极为相近,请看附录部分详解
 PyObject * temp=Py_BuildValue("(s)","jack");
 pStuObj = PyObject_CallObject(pClass, temp);
    //获得函数对象jack中的成员函数printName,
    //这个getattr的意思就是得到当前对象的属性(不要局限于C++中的属性哦)
  pFunc= PyObject_GetAttrString (pStuObj, "printName");
 //调用函数printName
  PyEval_CallObject (pFunc, NULL); 
 ////////////////
 Py_Finalize();
 return 0;
}
/*
附录:
1:Student类,我发现print后面现在必须加上小括号了,否则会有问题
class Student:
    name=""
    def __init__(self,name):
        self.name=name
    def printName(self):
        print (self.name)
2:PyObject_CallObject和 PyEval_CallObject不同之处:
可以看出,后者较为直接,而且接受NULL,and does explicit type checks
for args and kwds.
PyObject_CallObject(PyObject *o, PyObject *a)
{
!  PyObject *r;
!  PyObject *args = a;
!
!  if (args == NULL) {
!   args = PyTuple_New(0);
!   if (args == NULL)
!    return NULL;
!  }
!
!  r = PyEval_CallObject(o, args);
!


相关文档:

python笔记之正则表达式

 正则表达式
具体的参考手册,这里记下一些小问题:
1、re对象的方法
match    Match a regular expression pattern to the beginning of a string.
search   re.search(pattern, string, flags) flags:re.I re.M re.X re.S re.L re.U
sub      Substitute oc ......

用栈解析算术表达式[Python版]

代码中采用了三步实现算术表达式的解析:
1. 将算术表达式(字符串)转换成一个列表parseElement方法
2. 将列表表示的算术表达式转换成后缀表达式changeToSuffix
3. 计算后缀表达式的结果
这里我是为了方便, 就写了个parseElement, 不想那方法写到后面却把自己绕住了, 可以想象一个带自增, 位, 逻辑, 算术的表达式的数值提 ......

Python库详解之网络(2)

昨天试了下用HTMLParser类来解析网页,可发现结果并不理想。不管怎么说,先写下过程,希望后来人能在此基础上解决我所遇到的问题。
写了2套解决方案,当然这2套只能对特定网站有效。我这里主要说明下对BBC主页www.bbc.co.uk和对网易www.163.com的解析。
对于BBC:
这套要简单得多,可能是该网页的编码比较标准吧
import ......

python中获得某月有多少天的函数

  偶然需要用到这样一个函数,在Delphi中,有现成的函数可以调用!在python中,我找了半天都还没找到,最后自己写了一个函数如下:
def dayOfMonth(date):
if date.month == 12:
return 31
else:
return (date.replace(month=date.month+1, day=1) - datetime.timedelta(days=1)).day
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号