可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

def person(name, age, **kw):print 'name:',name,'age:',age,'other:',kwdef test(a,b,**kwargs):print a,b,kwargs
if __name__ == '__main__':person('Gs',28)person('Gs',28,city='Xuzhou',school='hangzhou')

关键字参数有什么用?它可以扩展函数的功能。比如,在person函数里,我们保证能接收到nameage这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到。试想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。

    kw={'city':'Xuzhou','school':'hangzhou'}person('Gs',28,**kw)

通过一个tuple和dict,你也可以调用该函数:

def person(name, age,*args, **kw):print 'name:',name,'age:',age,'args:',args,'kw:',kwif __name__ == '__main__':args = (1, 2, 3)kw={'city':'Xuzhou','school':'hangzhou'}person('Gs',28,*args,**kw)

所以,对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。

要注意定义可变参数和关键字参数的语法:

*args是可变参数,args接收的是一个tuple;

**kw是关键字参数,kw接收的是一个dict。

转载于:https://www.cnblogs.com/gsblog/p/3585937.html

python关键字参数相关推荐

  1. python关键字参数可以避免什么问题_python入门课|Python关键字参数使用方法公布,能解决80%的python函数问题...

    [摘要]在这个科学技术高速发展的时代,越来越多的人都开始选择学习编程软件,那么首先被大家选择的编程软件就是python,也用在各行各业之中,并被大家所熟知,所以也有越来越多的python学习者关注py ...

  2. python 关键字参数为什么只能出现在最后_Python笔记2——默认参数,可变参数,关键字参数,参数组合...

    1.借助抽象,我们才能不关心底层的具体计算过程,而直接在更高的层次上思考问题;写计算机程序也是一样,函数就是最基本的一种代码抽象的方式 2.abs()求绝对值的函数 3.cmp()比较两个值大小的函数 ...

  3. python关键字参数顺序_位置参数和关键字参数的求值顺序

    Python 2.7 如果我们看一下与为函数调用创建AST(^{})相关的CPython源代码,那么参数求值的顺序是:return Call(func, args, keywords, vararg, ...

  4. python关键字参数必须位于位置参数之前_python函数中的参数(关键字参数,默认参数,位置参数,不定长参数)...

    默认参数:定义函数的时候给定变量一个默认值. def num(age=1): 位置参数:调用函数的时候根据定义函数时的形参位置和实参位置进行引用. 关键字参数:如果定义的函数中含有关键字参数,调用函数 ...

  5. python关键字参数必须位于位置参数之前_python关键字参数和位置参数

    关键字参数必须跟随在位置参数后面! 因为python函数在解析参数时, 是按照顺序来的, 位置参数是必须先满足, 才能考虑其他可变参数.,否则报错如下: In [74]: print(s1.forma ...

  6. Python关键字参数和可变参数

    可变参数 允许在调用函数时传入任意多个参数,Python允许在形参前面添加一个星号(*),表示该参数可以接收多个参数值,多个参数值被当做元组传入. def my_add(*args): sum1 = ...

  7. 调用jsapi缺少参数appid_【Python学习笔记】18、函数的参数关键字参数

    可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple.而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict.请看示例: de ...

  8. python函数用法详解2(变量的作用域(全局变量、局部变量)、共享全局变量、函数返回值、函数的参数(位置参数、关键字参数、默认参数、不定长参数)、拆包、交换变量值、引用、可变和不可变类型)

    1. 变量作⽤域         变量作⽤域指的是变量⽣效的范围,主要分为两类:局部变量和全局变量. 局部变量         定义在函数体内部的变量,即只在函数体内部⽣效. def testA(): ...

  9. python 高阶函数 与关键字参数

    修饰器 之前我一直有一个疑惑,就是修饰器里面对函数的操作为什么不能直接写进函数里面就好了吗?何必这么麻烦呢,当我进一步理解之后,原来修饰器的作用就是完成那些不能写进函数里面的功能的,好比必须要等到函数 ...

最新文章

  1. Tslib移植与分析【转】
  2. 国产研发管理工具也在慢慢壮大,Worktile7岁了!
  3. pandas使用query函数删除dataframe中某一列数值等于某一特定值的行(remove dataframe rows baed on column value)
  4. Xilinx 推出 reVISION,继续拓展机器学习市场
  5. 面试题31.连续子数组的最大和
  6. Android 对话框(Dialog)大全
  7. 数据结构与算法之美02
  8. 数据库更新记录,但程序查不到新记录问题
  9. Lucene索引库的维护功能实现
  10. 2022年学Web前端怎么样?还有发展前景吗?
  11. Mozilla考虑支持H.264
  12. 一个权重的物体拷贝权重给多个(oneWeightToMany)
  13. 你越努力,越没有领导潜力
  14. Google 面试题和详解
  15. 基于PLC和组态软件的多方式运行小车控制系统设计
  16. 旷世巨作!20 多位架构师携手打造的“Java 面试核心宝典”限时开源
  17. 李宏毅机器学习L6 GAN
  18. Selenium中的隐式等待和显式等待
  19. 二叉树——推荐一些神奇的网站
  20. 关于分钻石的数学题有五个海盗得到了一百颗的钻石

热门文章

  1. mysql数据库分表备份脚本_MySQL分库分表备份脚本
  2. 网工协议基础(4)TCP/UDP协议
  3. 网络工程师人手必备!常用网络命令合集请收下
  4. EventBridge消息路由|高效构建消息路由能力
  5. 从零开始入门 K8s | Kubernetes 网络概念及策略控制
  6. java循环语句三角形_JAVA——程序流程控制——循环语句——for循环(打印三角形)...
  7. 单片机程序配置成开漏输出_单片机I/O开漏输出详解
  8. python编程基础题库_大学moocPython编程基础题库及答案
  9. linux命令gen,Linux中msgen命令起什么作用呢?
  10. rn项目 假如cocoapods_在项目中集成 RN