我们在写Python代码的时候,有的时候需要设计一种函数,这种函数的参数个数不确定,或者说要求函数的参数不限个数,只有在函数被调用的时候,才能确定参数的数量。本文介绍如何实现这样的函数参数接口的设计。

tuple参数(*args)

我们在设计函数参数的时候,如果使用一个*符号后跟字母,表示这是一个tuple参数,tuple内数据的个数,就不限制了。

我们来设计一个简单的函数,这个函数的作用就是将tuple参数内所有的数据相加求和:

add函数的参数,*args,*符号后面必须要有字母跟随,如果参数是一个独立的*符号,语义是不一样的!

*args参数在函数内部,是一个tuple类型的对象,使用时要去掉前面的*符号,直接使用args。在调用函数时,看不出来这是一个tuple,调用时并无特别之处,只是参数的数量不确定,可以很多,注意哦,也可以没有参数。

实现不限参数个数的函数接口,一般都使用这种方式,tuple对象内的各数据类型应该保持一致,如果不一致,大概率这不是一个好的设计,因为对各数据的处理方式会不一样。

dict参数(**kwargs)

设计函数参数时,如果使用两个**符号后跟字母,表示这个参数是一个dict对象。这种方式也可实现函数参数的个数不限。

下面的代码示例,是一个输入dict参数的函数,函数的作用,将dict对象中的数据,全部以 key : value 配对的方式显示出来:

采用**kwargs参数,函数调用时,要写成key=value的形式。同样的,这种方式也兼容没有参数输入。

使用这种方式的dict参数,函数内部可能需要预先知道有哪些key值可以使用,或者就是直接遍历所有的key和value。我想到了这样一个应用场景,设计一个函数,作用是替换输入字符串中的某些字符,返回新字符串,替换规则通过**kwargs传入。代码实现如下:

>>> def char_replace(originstr, **kwargs):

... newstr = ''

... for c in originstr:

... if c in kwargs.keys():

... newstr += kwargs[c]

... else:

... newstr += c

... return newstr

...

>>>

>>> char_replace('abcde', a='x')

'xbcde'

>>> char_replace('abcde', a='x',c='y')

'xbyde'

>>> char_replace('abcde', a='x',c='y',e='z')

'xbydz'

以上就是在Python中,实现函数参数个数不确定的两种方法。

-- EOF --

python创建函数、可以接受任意多个整数参数并求和_如何实现Python函数的参数不限个数?...相关推荐

  1. python参数是什么_最全Python快速入门教程,满满都是干货

    Python是面向对象,高级语言,解释,动态和多用途编程语言.Python易于学习,而且功能强大,功能多样的脚本语言使其对应用程序开发具有吸引力. Python的语法和动态类型具有其解释性质,使其成为 ...

  2. python可变参数的实验性_详解Python的三种可变参数

    可变参数 可变参数应该最简单,在C/C++和Java等语言中都有,就是用*号来表示,例如 def testArg(*arg) 你可以传入任意多个元素(包括0)到参数中,在函数内部会自动认为是一个元组或 ...

  3. pta函数统计素数并求和_黎曼的zeta函数

    9月24日阿提亚爵士(Sir Atiyah)直播"证明"黎曼猜想(Riemann hypothesis)在普通人中引发了一轮数学热潮,网络上一时间涌现了很多数学八卦文章.许多人在论 ...

  4. python老是报参数未定义_浅谈Python程序的错误:变量未定义

    Python程序的错误种类 Python程序的错误分两种.一种是语法错误(syntax error).这种错误是语句的书写不符合Python语言的语法规定.第二种是逻辑错误(logic error). ...

  5. python列表元素求和_如何在python语言使用不同方法实现列表元素求和

    在使用python语言列表时,如果列表中的元素都是数值类型,可以对元素进行求和.下面利用不同的方法实现列表元素求和: 工具/原料 python pycharm 截图工具 方法/步骤 1 第一步,在已创 ...

  6. oracle对某两列求和再求和_只会SUM函数求和,试试这5种求和函数,十倍提高工作效率...

    在平时的工作和学习中,求和计算算是比较司空见惯的数据统计方式,但大多数人只知道Sum函数可以用来求和,事实上,除了SUM函数,还有SUMIF.SUMIFS.SUBTOTAL.SUMPRODUCT.SU ...

  7. python创建函数、可以接受任意多个整数参数并求和_pythonxlwt:求和函数最大参数限制?...

    使用xlwt库生成excel文件时遇到此错误:File "/usr/local/lib/python2.7/dist-packages/xlwt/ExcelFormula.py", ...

  8. python创建一个字典、关键字为只包含字母的字符串_探究Python源码,终于弄懂了字符串驻留技术...

    摘要:在本文中,我们将深入研究 Python 的内部实现,并了解 Python 如何使用一种名为字符串驻留(String Interning)的技术,实现解释器的高性能. 每种编程语言为了表现出色,并 ...

  9. python内置函数可以返回数值型序列中所有元素之和_智慧职教: Python内置函数________________用来返回数值型序列中所有元素之和。...

    智慧职教: Python内置函数________________用来返回数值型序列中所有元素之和. 答:3, 中国大学MOOC: 叙事性是插画的核心,每一幅插画背后都有一个作者心中的故事,或唯美,或悲 ...

最新文章

  1. 基于LSTM的情感分类案例:Tensorflow代码
  2. 在navicat中查看所有表的注释
  3. 紧跟时代步伐,让我们拥抱MVC 3
  4. 13_线性回归分析、线性模型、损失函数、最小二乘法之梯度下降、回归性能评估、sklearn回归评估API、线性回归正规方程,梯度下降API、梯度下降 和 正规方程对比
  5. cf414B(dp)
  6. 空间说说html,空间说说大全(共100句)
  7. guava 缓存查询_阿里Java二面难点:Redis缓存穿透、击穿、缓存雪崩方案
  8. Google Map API运行提示Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY
  9. 【svn】Centos搭建svn服务器环境
  10. 【人脸表情识别】基于matlab GUI稀疏表示人脸表情识别【含Matlab源码 786期】
  11. javascript异步机制 — call stack
  12. 基于javaEE的网上商城购物系统
  13. 【知识图谱】08KBQA问答系统(python+fuseki+jena)
  14. excel转word_这3种Word、Excel格式不变的互转方法,实在太好用了
  15. c语言中怎样写入百分号,C语言中如何用printf函式输出百分号?
  16. 计算机怎么更换硬盘,如何更换电脑新硬盘无需重装系统_换硬盘不重装系统方法...
  17. 移动互联网感言(董烨/Joven.Dong)
  18. 解锁ChatGPT超高级玩法,展示动态图片,纯干货分享!
  19. Elasticsearch 7.3.0 翻译 - 《Aggregations》 度量聚合 百分位数聚合
  20. [python] ​python-pinyin库

热门文章

  1. 【前端基础】12.CSS 基础知识学习——基本语法结构
  2. 怎么提高计算机用户权限,在USER用户下提升自已的权限
  3. Debian 启用root账户远程登录并删除多余用户
  4. 从0到1400star,从阮一峰周刊到尤雨溪推荐,小透明开源项目的2021年总结
  5. 解构金蝶EAS 开发工具
  6. Python爬虫实战,pytesseract模块,Python实现拉勾网岗位数据可视化
  7. Python 基础(二)[列表,字典,文件操作]
  8. Eclipse+ GNU ARM Eclipse Plug-in+ Sourcery G++ Lite Edition for ARM+OPENCD+Jlink的开源开发环境。
  9. 8.3列表/菜单/文本域标记
  10. 电脑截屏有哪些常用的快捷键