vc中调用python代码
运行一句python命令
对vc设置路径
include:D:\PYTHON31\INCLUDE
lib:D:\PYTHON31\LIBS
#include "stdafx.h"
#include "python.h"
int main(int argc, char* argv[])
{
Py_Initialize() ;
PyRun_SimpleString("print('Hello')");
//PyRun_SimpleString("print(dir())");
Py_Finalize();
return 0;
}
编译、连接
拷贝D:\Python31\python31.dll到exe文件目录
运行,输出到控制台
可以运行多行命令
Py_Initialize() ;
PyRun_SimpleString("x=100");
PyRun_SimpleString("print(x)");
PyRun_SimpleString("a=x*x\nprint(a)\n");
Py_Finalize();
相当于在python下运行下列代码
x=100
print(X)
a=x*x
print(a)
控制台输入
以下代码解释控制台输入
#include "stdafx.h"
#include "python.h"
int main(int argc, char* argv[])
{
Py_Initialize() ;
PyRun_AnyFile(stdin,NULL);
Py_Finalize();
return 0;
}
读取python变量值
将python运行结果读取到vc中
char *cstr;
PyObject *pstr;
PyObject *main_dict;
Py_Initialize() ;
PyObject* main_module = PyImport_AddModule("__main__");
main_dict = PyModule_GetDict(main_module);
PyRun_SimpleString("x='abc'");
pstr = PyRun_String("x", Py_eval_input, main_dict, main_dict);
PyArg_Parse(pstr,"s",&cstr); //转换
printf(cstr);
Py_Finalize();
相关文档:
Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。Python 1.5之前版本则是通过 regex 模块提供 Emecs 风格的模式。Emacs 风格模式可读性稍差些,而且功能也不强,因此编写新代码时尽量不要再使用 regex 模块,当然偶尔你还是可能在老代码里发现其踪影。
& ......
在Python中的线程运行实际是受到Interpreter的控制或者说牵制的。在Interpreter的核心函数
PyObject * PyEval_EvalFrameEx
(PyFrameObject *f, int
throwflag)
我们可以看到有一个全局变量_Py_Ticker来控制着线程对Interpreter的占有的,默认是Interpreter每执行一百条指令就会释放另一个全局变量interpreter_lock.
......
Python简单又功能强大。它注重的是如何解决问题,而不是编程语言的语法和结构。理想的脚本语言。适用于快速的应用程序开发。
Python是一种解释性语言。还是一种面向对象的语言。
有两种使用python运行你的程序的方式:
使用交互式的带提示符的解释器
使 ......
上一篇里的LAME项目已经展示了python如何与C语言交互,但程序仍不够理想,在python这一端仅仅是传递源文件和目标文件的路径,再调用C模块的encode方法来进行编码,但问题在于你无法控制encode函数,比如你想编码的源文件如果不是原始数据,而是wav文件或者其他格式呢?对于这个问题,有两种方法可以选择,一种模仿前面的C模 ......
>>> a="abcd"
>>> ",".join(a)
'a,b,c,d'
>>> "|".join(['a','b','c'])
'a|b|c'
>>> ",".join(('a','b','c'))
'a,b,c'
>>> ",".join({'a':1,'b':2,'c':3})
'a,c,b' ......