问题1:

假如我们想编写一个可以接受任意数量参数的函数

解决思路:

我们可以编写一个可接受任意数量的位置参数的函数,它是以*开头的参数。

下面是示例:

def avg(first,*rest):return (first+sum(rest))/(1+len(rest))print(avg(2,5))             -->3.5
print(avg(3,5,6,7,8))       -->5.8

在上面的代码中,rest是一个元组,这个元组包含了其他传递过来的位置参数,在计算过程中会被当做一个序列来处理,而*则是起解参的作用。

下面再举一个简单的例子:

def fun(*args):sum=0for i in args:sum+=iprint(sum)
fun(3,4,5)        #--> 12
fun(5,8,9,6,7)    #--> 35

问题2:

如果想要编写一个接受任意数量的关键字参数的函数呢?可以用以****开头**的参数。

下面是示例:

def fun(x,*args,**kwargs):print(x)print(args)print(kwargs)fun(1,2,a=20,b=50,c=80)

输出结果:

1
(2,)
{'a': 20, 'b': 50, 'c': 80}

上面的示例中,涉及到参数的混合使用,*args是位置参数,**kwargs是关键字参数,是以字典的形式传递的。

为了帮助理解,我们再举一个例子:

import html  #导入html模块
def make_elements(name,value,**attrs):keyvals=['%s="%s"'% item for item in attrs.items()] #列表推导式# join() 用于将序列中的元素以指定的字符连接生成一个新的字符串attr_str=' '.join(keyvals)  element='<{name} {attrs}>{value}</{name}>'.format(name=name,attrs=attr_str,value=html.escape(value) )return elementprint(make_elements('item','Alia',size='large',quantity=6))
print(make_elements('p','<span>'))

运行结果:

<item size="large"quantity="6">Alia</item>
<p >&lt;span&gt;</p>

问题3

在函数定义中,以 * 开头的参数只能作为最后一个位置参数出现,而以 ** 开头的参数只能作为最后一个参数的出现。在函数定义中存在一个很微妙的特性,那就是在 * 开头的参数后面仍然可以有其他的参数出现。

def a(x,*args,y)passdef b(x,*args,y,**kwargs)pass

我们把这样的参数称之为 keyword-only参数(就是出现在*args之后的参数只能作为关键字参数使用)

可接受任意数量参数的函数相关推荐

  1. Python实战从入门到精通第十一讲——可接受任意数量参数的函数

    构造一个可接受任意数量参数的函数. 为了能让一个函数接受任意数量的位置参数,可以使用一个*参数.例如: def avg(first, *rest):return (first + sum(rest)) ...

  2. python支持任意大的数字_Python实现接受任意个数参数的函数方法

    这个功能倒也不是我多么急需的功能,只是恰好看到了,觉得或许以后会用的到.功能就是实现函数能够接受不同数目的参数. 其实,在C语言中这个功能是熟悉的,虽说实现的形式不太一样.C语言中的main函数是可以 ...

  3. Python编程学习:让函数更加灵活的*args和**kwargs(设计不同数量参数的函数)的简介、使用方法、经典案例之详细攻略

    Python编程学习:让函数更加灵活的*args和**kwargs(设计不同数量参数的函数)的简介.使用方法.经典案例之详细攻略 目录 *args和**kwargs(设计不同数量的参数函数)的简介 1 ...

  4. python函数如何实现可变参数_python之函数定义可变参数(任意数量参数)

    原博文 2020-05-23 11:49 − python中函数可以定义任意数量的参数,即可变参数. 比如: def fun(*args): print args 在可变参数的名字前面加一个*号,即可 ...

  5. c2064 项不会计算为接受0个参数的函数_【JS必知必会】高阶函数详解与实战

    本文涵盖 前言 高级函数概念 函数作为参数的高阶函数 map filter reduce sort详解与实战 函数作为返回值的高阶函数 isType函数与add求和函数 如何自己创建高阶函数 前言 一 ...

  6. python 类初始化参数校验_python之类的任意数量参数初始化

    python中在对类的函数初始化时,可以传入多个参数,甚至任意数量的参数 比如: class  Person(object): def __init__(slef, name, age, **kw): ...

  7. c2064 项不会计算为接受0个参数的函数_getMask()讨论:Abaqus Part对象的成员变量常用函数...

    最近工作之余,想制作一个自动对多cell的Part进行skin并建立相应set的小插件.我的目的是对该Part中各个cell分别进行skin,以便于将来赋予不同的属性.这样可以有效的减少输出结果文件的 ...

  8. c2064 项不会计算为接受0个参数的函数_无网格法理论与Matlab程序设计(6)——传统径向基点插值(RPIM)形函数...

    参考资料 G.R.Liu Y.T.GU著 王建明 周学军译 <无网格法理论及程序设计> 数值实现 Matlab 2019a 前情回顾 形式主义的居士:无网格法理论与Matlab程序设计(1 ...

  9. c++ 项不会计算为接受 0 个参数的函数_OFFSET函数从入门到进阶之进阶操作篇(与MATCH组合)...

    了解了OFFSET函数的参数和基本用法,我们就开始进行进阶操作了.在基本用法中,发现各个参数都是我们单个输入,实际工作中,OFFSET函数通常用在区域数据的引用,这就会牵涉到通过拖动进行填充,那里面的 ...

最新文章

  1. 分库分表介绍和Sharding-JDBC快速入门
  2. 重磅发布|网易云信质量数据监控台对外开放
  3. c++原型模式prototype
  4. 自学前端开发,前端进阶阶段需要学习哪些知识?
  5. DataGrid的ViewState
  6. google map flex
  7. CI框架源码学习笔记7——Utf8.php
  8. 小车自动往返工作原理_请把小车自动往返控制线路的工作原理描述一下。
  9. jms.jar 2.0_JMS API概述:JMS 1.x和JMS 2.x
  10. Tensorflow笔记:搭建神经网络
  11. 用DISM为Windows 7 SP1 2019官方英文版添加中文语言包及XHCI驱动
  12. 何为全栈工程师?你是否应该成为一名全栈工程师?
  13. 根据银行卡号查询银行名接口
  14. 热门好用的IP归属地API
  15. 与英语密切联系的计算机专业,计算机专业英语
  16. android画布橡皮,Android 图片涂鸦橡皮擦功能
  17. 最全软件测试面试题(经典)
  18. 《逆赛博格教堂与集市》——国内首个基于区块链的人与AI协作艺术展即将开幕...
  19. Python获取Csdn扫码登录每日一句
  20. 机器人将颠覆零售业,看AI在零售行业有哪些应用?

热门文章

  1. 函数作为返回值练习 作用域和作用域链及预解析 闭包 闭包小案例
  2. python try语句各种格式输出_python如何写try语句
  3. wps怎么投递简历发到boss直聘_央视新闻联合BOSS直聘带“岗”年薪超82亿元
  4. Spring Cloud Gateway介绍(二)
  5. python关闭文件os_如何关闭使用os.startfile(),Python 3.6打开的文件
  6. Multimedia Event Extraction (M2E2) Annotation Guideline V0.1
  7. bzoj 1914: [Usaco2010 OPen]Triangle Counting 数三角形——极角排序
  8. 51CTO学院四周年-成长之路
  9. eclipse如何快速查找某个类
  10. UVa 1368 - DNA Consensus String