python中实现函数不限制参数的数量
我们在写Python代码的时候,有的时候需要设计一种函数,这种函数的参数个数不确定,或者说要求函数的参数不限个数,只有在函数被调用的时候,才能确定参数的数量。本文介绍如何实现这样的函数参数接口的设计。
tuple参数(*args)
我们在设计函数参数的时候,如果使用一个*符号后跟字母,表示这是一个tuple参数,tuple内数据的个数,就不限制了。
我们来设计一个简单的函数,这个函数的作用就是将tuple参数内所有的数据相加求和:
>>> def add(*args):
... print(args)
... print(type(args))
... sum = 0
... for i in range(len(args)):
... sum += args[i]
... print(sum)
...
>>> add(1,2,3)
(1, 2, 3)
<class 'tuple'>
6
>>> add(1,2,3,8,9,666)
(1, 2, 3, 8, 9, 666)
<class 'tuple'>
689
>>> add()
()
<class 'tuple'>
0
add函数的参数,args,符号后面必须要有字母跟随,如果参数是一个独立的*符号,语义是不一样的!
args参数在函数内部,是一个tuple类型的对象,使用时要去掉前面的符号,直接使用args。在调用函数时,看不出来这是一个tuple,调用时并无特别之处,只是参数的数量不确定,可以很多,注意哦,也可以没有参数。
实现不限参数个数的函数接口,一般都使用这种方式,tuple对象内的各数据类型应该保持一致,如果不一致,大概率这不是一个好的设计,因为对各数据的处理方式会不一样。
dict参数(**kwargs)
设计函数参数时,如果使用两个**符号后跟字母,表示这个参数是一个dict对象。这种方式也可实现函数参数的个数不限。
下面的代码示例,是一个输入dict参数的函数,函数的作用,将dict对象中的数据,全部以 key : value 配对的方式显示出来:
>>> def test_kw(**kwargs):
... print(kwargs)
... print(type(kwargs))
... for k,v in kwargs.items():
... print(k,':',v)
...
>>> test_kw(a=1,b=2,c=3,d=4)
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
<class 'dict'>
a : 1
b : 2
c : 3
d : 4
>>> test_kw(a=1,b=2,c=3,d=4,x=999)
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'x': 999}
<class 'dict'>
a : 1
b : 2
c : 3
d : 4
x : 999
>>> test_kw()
{}
<class 'dict'>
采用**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中,实现函数参数个数不确定的两种方法。
http://www.taodudu.cc/news/show-2666876.html
相关文章:
- 计算机专业公务员三不限,公务员:三不限岗位是大坑,这3类专业最受欢迎,选对才是硬道理...
- dns异常
- 无线路由器DNS服务器异常,fast无线路由器dns异常的解决方法
- xp系统dns服务器异常,电脑dns异常怎么修复,电脑dns异常修复方法介绍
- 路由器显示dns服务器异常怎么办,手机显示DNS异常解决方法(图文)
- DNS服务器存在问题需要修复,dns服务(dns异常怎么都修复不了)
- 域名转发修改dns服务器,域名注册修改DNS服务器
- dns服务器地址为空,dns服务器地址为空
- dns服务器修复视频,修复dns异常最为简单的方法,一起学习吧
- 搜集ipv6 DNS服务器信息,IPV6 DNS服务器地址列表
- 监控系统首选DNS服务器,监控windows DNS服务器
- win7无法自动获取dns服务器地址,Windows7系统DNS服务器故障怎么解决?
- dns配置异常怎么修复_win10 dns异常怎么修复
- 360断网急救箱 dns服务器未响应,发现DNS服务异常,用360断网急救箱修复后过一段时间又复发。怎么办?...
- linux中dns服务故障,Linux DNS服务器故障解决
- 改为dns服务器响应的原因,2020年dns服务器异常的原因及解决方法
- 磊科路由器dns服务器老要修复,路由器dns异常解决方法
- 路由器输入正确的dns服务器,路由器显示DNS服务器异常怎么解决
- W7系统dns辅服务器异常,win7dns服务器异常原因及解决方法
- 手机显示DNS服务器异常,手机dns服务器异常怎么设置
- 毕业设计 基于STM32厨房环境监控报警系统
- 胡闹厨房2 for Mac厨房模拟游戏又名煮糊了2
- python爬取下厨房每周最受欢迎菜谱
- python爬虫爬取下厨房食谱,周末聚餐真的停不下来
- 下厨房(istringstream的使用)----网易2017内推笔试编程题合集
- 最美应用-从Android研发工程师的角度之[厨房故事]
- 多益网络社招iq_多益网络2018秋招iq测试题(二)
- 基于物联网的智能厨房安全监测系统-上位机程序
- 基于机智云平台的厨房智能监控系统
- 450g带盖吐司配方_【最好吃的吐司记录450克的做法步骤图】偶尔小雨_下厨房
python中实现函数不限制参数的数量相关推荐
- python函数不包括参数函数_python中实现函数不限制参数的数量
我们在写Python代码的时候,有的时候需要设计一种函数,这种函数的参数个数不确定,或者说要求函数的参数不限个数,只有在函数被调用的时候,才能确定参数的数量.本文介绍如何实现这样的函数参数接口的设计. ...
- python中的函数不包括参数函数_在Python中定义函数时不需要声明函数参数的类型。...
的书面申提出员本机关请公务辞职人向任免,定义的类应当月内在(机关)个任免审批. 应通)作过(出确认,函数函数的处到预目的质量期的否达理是事故,依然隐患存在是否. 不正下列确的说法是(,时不声明标文部分 ...
- python中figure函数_Python figure参数及subplot子图绘制代码
1. Python的figure参数主要有: def figure(num=None, # autoincrement if None, else integer from 1-N figsize=N ...
- python中函数的参数_Python小知识-Python中的函数参数(基础篇)
0 总述 这个题目分为2篇,第一篇基本上是概念以及实例,有个相对系统的认识,第二篇想写的深入一些,不同参数类型的区别以及和c/c++的函数参数对比下异同-下面开始是第一篇的内容啦- Python中的函 ...
- python中choice()函数的参数_Python中choice函数如何实现?
熟悉Python的小伙伴是知道Python是可以生成随机项的,python中choice函数是random模块的随即取样函数,它可以通过导入 random 模块,调用 random 静态对象生成Pyt ...
- Python中自定义函数参数类型
函数:函数是组织好的,可以重复使用的,用来实现单一的或相关联功能的代码段. 函数可以提升代码的复用率,提升代码的模块性,提升代码可维护性 使用def 关键字定义函数,例如:def func1(): 形 ...
- Python 中product函数的用法以及该函数中repeat参数的意义
Python中product函数用于生成两个可迭代对象的笛卡尔积: 假设我们有两个列表: A = [1, 2, 3] B = ['A', 'B', 'C'] from itertools import ...
- python中pop函数_Python中的Pop函数
python中pop函数 什么是弹出功能? (What is the pop function?) The method pop() removes and returns the last elem ...
- 技术图文:举例详解Python中 split() 函数的使用方法
背景 这篇文章主要介绍Python中的split()函数的使用方法,split()函数通常用于将字符串切片并转换为列表,需要的朋友可以参考一下. 技术分析 Python中有split()和os.pat ...
- python中eval()函数的使用
python中eval()函数的使用 python eval函数功能:将字符串str当成有效的表达式来求值并返回计算结果. 函数定义: eval(expression, globals=None, l ...
最新文章
- 睡眠不足,记忆力还有救吗?Nature:饿着
- datatable与SqlDataReader
- linux(gentoo)安装配置conky
- Redis 单机模式,主从模式,哨兵模式(sentinel),集群模式(cluster),第三方模式优缺点分析
- httpinvoker远程调用超时_RPC远程过程调用协议工作原理分析
- CSS多行文本垂直居中
- oracle loder nextval,ORA-07445: 出现异常错误: 核心转储
- 前端js 实现文件下载
- 【Matplotlib】详解图像各个部分
- linux发布微软消息队列,消息队列RabbitMQ入门与5种模式详解
- Smobiler图片二进制上传处理
- 已知两点和切线如何确定圆心和半径长度
- Flink 使用Table Api 读取文件数据并写出到文件中
- WAF(网络应用防火墙)是什么
- ffmpeg把透明背景图片合成透明背景视频
- Vue学习--子组件向父组件传值
- PointRend使用记录
- 谷粒商城项目篇14_分布式高级篇_订单支付
- 基于飞蛾火焰优化算法的函数寻优算法
- 【UnityIUnity精灵Unity物体】生成控制大量物体的时间考究