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

Boost Python 实现C调用python错误解决方法

由于Boost Python跟不上Python版本更新,如下方法调用可能产生TypeError: 'NoneType' object does not support item assignment异常。
Boost Python文档中例子可能产生异常。
Py_Initialize();
object main_module = import("__main__");
object main_dict = main_module.attr("__dict__");
try{
   object result = exec("result = 5 + 5",main_dict);
   int five_squared = extract<int>(main_dict["result"]);
   cout<<"extract value : "<<five_squared<<endl;
   cin>>ij;
}
    catch(error_already_set){
        PyErr_Print();
        cin>>ij;
    }
可以如下方法解决
Py_Initialize();
object main_module = import("__main__");
object main_dict = main_module.attr("__dict__");
try{
    handle<> ignored((PyRun_String(
        "result = 5 ** 2"
        , Py_file_input
        , main_dict.ptr()
        , main_dict.ptr())
    ));
   int five_squared = extract<int>(main_dict["result"]);
   cout<<"extract value : "<<five_squared<<endl;
   cin>>ij;
}
    catch(error_already_set){
        PyErr_Print();
        cin>>ij;
    }
Boost Python中执行表达式函数也可以正常运行。
Py_Initialize();
object main_module = import("__main__");
object main_dict = main_module.attr("__dict__");
try{
   object result = eval("5 + 5",main_dict);
   int five_squared = extract<int>(result);
   cout<<"extract value : "<<five_squared<<endl;
   cin>>ij;
}
    catch(error_already_set){
   


相关文档:

Python: 使用装饰器“@”取得函数执行时间

  Python中可以使用装饰器对函数进行装饰(或说包装),利用这个特性,可以很方便、简洁地解决一些问题,比如获得函数执行时间的问题。
  首先,我们定义一个函数,如下:
  def exeTime(func):
def newFunc(*args, **args2):
t0 = time.time()
print "@%s, {%s} start" % (time.strftime("%X", time.local ......

Python 定时运行脚本

import sys
import os
import datetime
import time
class ArgsDealwith:
   
    def arg_environment(self, args):
        filepath = ('PYTHON_PATH', 'path')
        for i in filepath:
 &nbs ......

python使用心得2

目前编译器(实际是翻译器)项目已经完成,对python的使用有了更深的感受。
除了之前说的以外,以下是补充几点(完全是个人看法)。
首先是python相对路径读取配置文件和写文件问题,相对路径在python中的使用跟java和C++不同。它是在那个位置运行py脚本,就把当前路径作为根路径。如:当在目录A下运行一个py脚本,那么目 ......

c/s与b/s的不同

C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或 SQL Server。客户端需要安装专用的客户端软件。
B/S 是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、In ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号