python创建函数、可以接受任意多个整数参数并求和_如何实现Python函数的参数不限个数?...
我们在写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函数的参数不限个数?...相关推荐
- python参数是什么_最全Python快速入门教程,满满都是干货
Python是面向对象,高级语言,解释,动态和多用途编程语言.Python易于学习,而且功能强大,功能多样的脚本语言使其对应用程序开发具有吸引力. Python的语法和动态类型具有其解释性质,使其成为 ...
- python可变参数的实验性_详解Python的三种可变参数
可变参数 可变参数应该最简单,在C/C++和Java等语言中都有,就是用*号来表示,例如 def testArg(*arg) 你可以传入任意多个元素(包括0)到参数中,在函数内部会自动认为是一个元组或 ...
- pta函数统计素数并求和_黎曼的zeta函数
9月24日阿提亚爵士(Sir Atiyah)直播"证明"黎曼猜想(Riemann hypothesis)在普通人中引发了一轮数学热潮,网络上一时间涌现了很多数学八卦文章.许多人在论 ...
- python老是报参数未定义_浅谈Python程序的错误:变量未定义
Python程序的错误种类 Python程序的错误分两种.一种是语法错误(syntax error).这种错误是语句的书写不符合Python语言的语法规定.第二种是逻辑错误(logic error). ...
- python列表元素求和_如何在python语言使用不同方法实现列表元素求和
在使用python语言列表时,如果列表中的元素都是数值类型,可以对元素进行求和.下面利用不同的方法实现列表元素求和: 工具/原料 python pycharm 截图工具 方法/步骤 1 第一步,在已创 ...
- oracle对某两列求和再求和_只会SUM函数求和,试试这5种求和函数,十倍提高工作效率...
在平时的工作和学习中,求和计算算是比较司空见惯的数据统计方式,但大多数人只知道Sum函数可以用来求和,事实上,除了SUM函数,还有SUMIF.SUMIFS.SUBTOTAL.SUMPRODUCT.SU ...
- python创建函数、可以接受任意多个整数参数并求和_pythonxlwt:求和函数最大参数限制?...
使用xlwt库生成excel文件时遇到此错误:File "/usr/local/lib/python2.7/dist-packages/xlwt/ExcelFormula.py", ...
- python创建一个字典、关键字为只包含字母的字符串_探究Python源码,终于弄懂了字符串驻留技术...
摘要:在本文中,我们将深入研究 Python 的内部实现,并了解 Python 如何使用一种名为字符串驻留(String Interning)的技术,实现解释器的高性能. 每种编程语言为了表现出色,并 ...
- python内置函数可以返回数值型序列中所有元素之和_智慧职教: Python内置函数________________用来返回数值型序列中所有元素之和。...
智慧职教: Python内置函数________________用来返回数值型序列中所有元素之和. 答:3, 中国大学MOOC: 叙事性是插画的核心,每一幅插画背后都有一个作者心中的故事,或唯美,或悲 ...
最新文章
- 基于LSTM的情感分类案例:Tensorflow代码
- 在navicat中查看所有表的注释
- 紧跟时代步伐,让我们拥抱MVC 3
- 13_线性回归分析、线性模型、损失函数、最小二乘法之梯度下降、回归性能评估、sklearn回归评估API、线性回归正规方程,梯度下降API、梯度下降 和 正规方程对比
- cf414B(dp)
- 空间说说html,空间说说大全(共100句)
- guava 缓存查询_阿里Java二面难点:Redis缓存穿透、击穿、缓存雪崩方案
- Google Map API运行提示Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY
- 【svn】Centos搭建svn服务器环境
- 【人脸表情识别】基于matlab GUI稀疏表示人脸表情识别【含Matlab源码 786期】
- javascript异步机制 — call stack
- 基于javaEE的网上商城购物系统
- 【知识图谱】08KBQA问答系统(python+fuseki+jena)
- excel转word_这3种Word、Excel格式不变的互转方法,实在太好用了
- c语言中怎样写入百分号,C语言中如何用printf函式输出百分号?
- 计算机怎么更换硬盘,如何更换电脑新硬盘无需重装系统_换硬盘不重装系统方法...
- 移动互联网感言(董烨/Joven.Dong)
- 解锁ChatGPT超高级玩法,展示动态图片,纯干货分享!
- Elasticsearch 7.3.0 翻译 - 《Aggregations》 度量聚合 百分位数聚合
- [python] ​python-pinyin库
热门文章
- 【前端基础】12.CSS 基础知识学习——基本语法结构
- 怎么提高计算机用户权限,在USER用户下提升自已的权限
- Debian 启用root账户远程登录并删除多余用户
- 从0到1400star,从阮一峰周刊到尤雨溪推荐,小透明开源项目的2021年总结
- 解构金蝶EAS 开发工具
- Python爬虫实战,pytesseract模块,Python实现拉勾网岗位数据可视化
- Python 基础(二)[列表,字典,文件操作]
- Eclipse+ GNU ARM Eclipse Plug-in+ Sourcery G++ Lite Edition for ARM+OPENCD+Jlink的开源开发环境。
- 8.3列表/菜单/文本域标记
- 电脑截屏有哪些常用的快捷键