我们在写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)

6

>>> add(1,2,3,8,9,666)

(1, 2, 3, 8, 9, 666)

689

>>> add()

()

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}

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}

a : 1

b : 2

c : 3

d : 4

x : 999

>>> test_kw()

{}

采用**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中,实现函数参数个数不确定的两种方法。

python函数不包括参数函数_python中实现函数不限制参数的数量相关推荐

  1. python中关键字参数含义_python中接受任意关键字的参数

    1.*args args是非关键字参数,可以理解为形参,为了方便记忆我理解它是arguments的缩写. 2.*kwargs kwargs是键值对参数,为了方便记忆我理解它是key word argu ...

  2. python函数返回多个变量_Python中接收函数多个返回结果的两种方法

    在Python中函数经常会返回多个值,今天我们一起来讲解一下接收多个函数返回值的方法 工具/原料 电脑 Python开发工具 方法/步骤 1 用def 代码创建一个函数,名称为func1 代码如下: ...

  3. 在python中用递归的方法编程_python基础之函数,递归,内置函数

    阅读目录 一 数学定义的函数与python中的函数 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量, ...

  4. Python基础_第3章_Python中的循环结构

    Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...

  5. Python基础_第5章_Python中的数据序列

    Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...

  6. concat函数_三、P57-61 MySQL中常用函数

    本部分主要讲解MySQL数据库中常用函数的使用. P57 SQL中的函数类型:字符串函数.数值函数.日期和时间函数.流程函数.其他常用函数: P58 第1部分:字符串函数 1.concat函数 con ...

  7. python中函数包括参数函数吗_Python中的函数---函数的定义和参数

    本文是廖雪峰教程的笔记. 函数的定义 定义函数时,需要确定函数名和参数个数 def fun(x1,x2,x3):: 如果有必要,可以先对参数的数据类型做检查: 函数体内部可以用return随时返回函数 ...

  8. python数学库函数包括求最大公约数函数吗_pythonmathcot函数_math库是python语言的数学模块吗_Python中的数学模块:...

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 当我们在日常生活中编写程序时,我们通常遇到需要使用数学来完成任务的情况.像其他编程语言一样,Python提 ...

  9. python 函数参数注释_Python中函数添加注释 如何正确的为函数添加注释说明

    在前面鳄鱼君对Python的注释只是简单的提示一下,没有详细说明,在这片文章中会对Python中的一些注释方法进行说明,它非常重要. 在Python中单行注释和多行注释非常的简单: Python中文编 ...

最新文章

  1. matlab 汽车 流场,matlab画流场图
  2. DirectX 向量点乘和叉乘
  3. Flink从入门到精通100篇(十二)-如何分析和定位 Flink 作业 OOM 问题?
  4. VTK修炼之道73:交互部件_Widget应用综述
  5. XAML 编码规范 (思考)
  6. redis中使用redis-dump导出、导入、还原数据实例
  7. lua面向对象是怎么实现的
  8. python语言入门t_Python基础学习
  9. Tomcat的虚拟目录映射常用的几种方式
  10. MySQL开启命令自动补全功能(auto-rehash)
  11. Kettle下载安装教程
  12. 学而思编程python软件下载-靠品牌还是靠实力?猿编程、学而思编程、网易卡搭等机构深度测评...
  13. ddos应急处理_DDOS攻击应急响应预案
  14. 【二叉树】用python实现AVL树
  15. Go语言操作excel
  16. 一个虎扑社区数据分析实战
  17. uva 10118(DP)
  18. 时钟周期 主频 CPU执行时间
  19. HTML5的字体样式设置方法
  20. man帮助手册中英文设置

热门文章

  1. 毕业后想拿大厂offer?你得完整拥有这些计算机知识体系!
  2. 杨澜对话华为周跃峰:发展数字经济,存储技术是关键
  3. Google 也要“勒紧腰带”过日子了!
  4. 前端安全究竟该怎么做?从一个安全漏洞说起......
  5. 刚在乌镇夺魁的飞桨,又将在“WAVE SUMMIT+”深度学习开发者峰会带来哪些惊喜?...
  6. 华为小米入场,能拯救乐视互联网电视挖的坑吗?
  7. 请别拿程序员当工人使唤!
  8. AWS 开战 MongoDB!
  9. 被裁员 60%,以太坊大神忍不住要洗白了
  10. 程序员:我们都在为错误买单!