python dict函数用法_如何将python中的dict作为参数传入c函数中用c做相关的处理?...
展开全部
#先上代码再解释
static PyObject *keywdarg_parrot(PyObject *self, PyObject *args, PyObject *keywds)
{
int voltage;
char *state = "a stiff";
char *action = "voom";
char *type = "Norwegian Blue";
static char *kwlist[] = {"voltage", "state", "action", "type", NULL};
if (!PyArg_ParseTupleAndKeywords(args, keywds, "i|sss", kwlist,
&voltage, &state, &action, &type))
return NULL;
printf("-- This parrot wouldn't %s if you put %i Volts through it.\n",
action, voltage);
printf("-- Lovely plumage, the %s -- It's %s!\n", type, state);
Py_INCREF(Py_None);
return Py_None;
}
static PyMethodDef keywdarg_methods[] = {
/* The cast of the function is necessary since PyCFunction values
* only take two PyObject* parameters, and keywdarg_parrot() takes
* three.
*/
{"parrot", (PyCFunction)keywdarg_parrot, METH_VARARGS | METH_KEYWORDS,
"Print a lovely skit to standard output."},
{NULL, NULL, 0, NULL} /* sentinel */
};
PyObject * initkeywdarg(void)
{
/* Create the module and add the functions */
return Py_InitModule("keywdarg", keywdarg_methods);
}
这是一个函数(keywdarg_parrot)即使用了元组参数,也32313133353236313431303231363533e4b893e5b19e31333335333064使用了字典参数的例子。例子出自Python2.7.2的文档。具体在:
Python v2.7.2 documentation »Extending and Embedding the Python
Interpreter
这个页面下。文档里面有一些关于C/C++与Python交互的介绍和例子,还是比较详细的。传递字典参量要注意,{"parrot", (PyCFunction)keywdarg_parrot, METH_VARARGS | METH_KEYWORDS,
"Print a lovely skit to standard output."},
这里的METH_VARARGS | METH_KEYWORDS,与普通的不同。解析用:PyArg_ParseTupleAndKeywords(args, keywds, "i|sss", kwlist,
&voltage, &state, &action, &type)
其中的四个变量要提前声明好,这里分别是int,str,str,str类型的。int对应的是args接受到的值。string的都是keywds里面的,它们都是有初始值的。kwlist是变量的名字,就是在python里调用的时候使用的keyword名称。照着例子的模式可以改成其它的,能用的。具体是怎么工作的,其实我也太明白。
Python代码是这样的调用的时候:print keywdarg.parrot(10,"LHJ",'HKJ','ER')
print keywdarg.parrot(10,"LHJ",'HKJ')
print keywdarg.parrot(10,"LHJ",type='KJ')
输出分别是:
-- This parrot wouldn't HKJ if you put 10 Volts through it.
-- Lovely plumage, the ER -- It's LHJ!
None
-- This parrot wouldn't HKJ if you put 10 Volts through it.
-- Lovely plumage, the Norwegian Blue -- It's LHJ!
None
-- This parrot wouldn't voom if you put 10 Volts through it.
-- Lovely plumage, the KJ -- It's LHJ!
None
第二次调用省略掉了变量,也能正常执行。第三次调用,变量type本来是第四位的,现在变成了keyword并写在了第三位,是python代码里调用的常见形式:keyword不讲顺序,省略掉的keyword使用了默认值。
就这些了,其它的你再看一下Python的文档吧。
python dict函数用法_如何将python中的dict作为参数传入c函数中用c做相关的处理?...相关推荐
- python装饰器用法_深入浅出分析Python装饰器用法
本文实例讲述了Python装饰器用法.分享给大家供大家参考,具体如下: 用类作为装饰器 示例一 最初代码: class bol(object): def __init__(self, func): s ...
- python get函数用法_详解python中get函数的用法(附代码)
描述 Python 字典 get() 函数返回指定键的值,如果值不在字典中返回默认值. 语法 get()方法语法:dict.get(key, default=None) 参数 key – 字典中要查找 ...
- python语言format用法_详解Python中的format格式化函数的使用方法
format函数实现字符串格式化的功能 基本语法为: 通过 : 和 {} 来控制字符串的操作 一.对字符串进行操作 1. 不设置指定位置,按默认顺序插入 ①当参数个数等于{}个数的时候 str_1 = ...
- python or的用法_详细介绍Python中and和or实际用法
and 和 or 的特殊性质 在Python 中,and 和 or 执行布尔逻辑演算,但是它们并不返回布尔值:而是,返回它们实际进行比较的值之一.下面来看一下实例.>>> 'a' a ...
- python字符串切片用法_详解Python字符串切片
在python中,我们定义好一个字符串,如下所示. 在python中定义个字符串然后把它赋值给一个变量. 我们可以通过下标访问单个的字符,跟所有的语言一样,下标从0开始(==,我自己都觉得写的好脑残了 ...
- python语言arrows用法_如何在Python中使用pyarrow读取parquet文件
我已经从数据库中创建了一个具有三列(id.author.title)的parquet文件,并希望使用条件(title='learnpython')读取拼花板文件. 下面提到的是我用于这个POC的pyt ...
- python raw input用法_如何在 python raw_input 中使用 tab 键补全?
http://stackoverflow.com/ques... 这段代码写得不错,如果要补全第二个参数要自己写 complete 函数类似于下面的代码. def complete_cd(self, ...
- MATLAB中fix啥意思,matlab fix函数用法_常见问题解析,matlab
matlab syms什么意思_常见问题解析 matlab中syms的意思是定义多个变量,可以用来创建符号变量x和y,语法是"syms x y":也可以创建一些符号变量.函数和数组 ...
- matlab中的fix,matlab fix函数用法_常见问题解析
matlab syms什么意思_常见问题解析 matlab中syms的意思是定义多个变量,可以用来创建符号变量x和y,语法是"syms x y":也可以创建一些符号变量.函数和数组 ...
最新文章
- 我的WCF之旅 (11): 再谈WCF的双向通讯-基于Http的双向通讯 V.S. 基于TCP的双向通讯...
- SortedMap接口
- python顺时针螺旋顺序
- 相交链表—leetcode160
- 计算机设备管理程序在哪,电脑设备管理在哪,教您如何打开电脑设备管理
- 华为二面!!!面试官直接问我Java中到底什么是NIO?这不是直接送分题???
- wince6.0 s5pv210 中断
- Go并发调用的超时处理
- Head First 设计模式 —— 单例模式(Singleton)
- 微服务调用链基本原理与使用
- codeIgniter3 学习笔记五(表单验证)
- LINUX下载编译sqlite-jdbc(支持mips64el/loongarch64的jar包下载)
- 关于报表在移动端展现你需要知道哪些?
- 60套模板免费送,一秒搞定甘特图
- offsetWidth offsetHeight和clientWidth clientHeight的区别
- 为什么需要交叉编译器
- jax指标的用法_济安线预警指标?JAX指标?
- 谷歌大脑组合模型霸榜 SuperGLUE,什么模型这么高?
- 【Python爬虫】-从入门到入门-个人技术经验汇总-【爬虫和数据】
- 详谈Scrum和看板的区别