Python基础之可接受任意数量参数的函数
1. 可接受任意数量位置参数的函数
为了能让一个函数接受任意数量的位置参数,可以在参数部分使用“*”。
def avg(first, *rest):
return (first + sum(rest) / (1 + len(rest)))
print(avg(1, 2)) #1.5
print(avg(1, 2, 3, 4)) #2.5
在上面这个函数中,rest是由所有其他位置参数组成的元组。
然后我们在代码中把它当成了一个序列来进行后续的计算。
2. 可接受任意数量关键字参数的函数
为了接受任意数量的关键字参数,使用一个以**开头的参数。比如:
def stu_info(**kwargs):
print(kwargs)
print(kwargs["name"], kwargs["sex"])
stu_info(name="yang", sex = "male")
3. 可同时接受任意数量位置参数和关键字参数的函数
如果还系统希望某个函数能同时接受任意数量的位置参数和关键字参数,可以同时使用*和**。比如:
def anyargs(*args, **kwargs):
print(args)
print(kwargs)
在使用这个函数时,所有的位置参数会被放到args元组中,而所有的关键字参数会放到字典kwargs中。
4. *和**的位置
一个*参数只能出现在函数定义中最后一个位置参数后面,而**参数只能出现在最后一个参数。需要注意的是,在*后面仍然可以定义其他参数。
def a(x, *args, y):
pass
def b(x, *args, y, **kwargs):
pass
这种参数就是强制关键字参数。
Python基础之可接受任意数量参数的函数的更多相关文章
- Python 构造一个可接受任意数量参数的函数
为了能让一个函数接受任意数量的位置参数,可以使用一个* 参数 在这个例子中,rest 是由所有其他位置参数组成的元组.然后我们在代码中把它当成了一个序列来进行后续的计算
- js 函数作为参数+接受任意数量参数
javascript中的函数是“复合数据类型”,又成为“引用类型”.引用类型的变量指向存储单元中存放的是它们的实际存放地址.函数名是对函数的一种引用.var a=max_num ;a()就可以调用fu ...
- 请写一个php函数,可以接受任意数量的参数
请写一个php函数,可以接受任意数量的参数 这是一道面试题.怎么写这个函数呢? function fun(......) { } ----------------------------------- ...
- 研究不定数量参数的函数并实现一个printf函数
一.前提知识 1.如何传递参数(主函数) a.函数的参数是通过栈传递,而且是从右到左依次入栈 b.即使是char型变量,在传递参数时,也是占用两个字节,因为push操作是两个字节为单位的. c.sho ...
- Python基础笔记系列九:变量、自定义函数以及局部变量和全局变量
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 变量在前面的系列中也许就可以发现,python中的变量和C中的变量有些许不 ...
- Python基础(三)——集合、有序 无序列表、函数、文件操作
1.Set集合 class set(object): """ set() -> new empty set object set(iterable) -> n ...
- Python基础学习参考(三):内置函数
一:内置函数 在第一篇文章中,我们简单的认识了一下print()函数和input()函数,也就是输入和输出,这些函数我们可以直接的调用,不要自己定义或者引入什么,对吧?想这样的函数就叫做内置函数.这里 ...
- Python基础笔记:函数式编程:高阶函数、返回函数、匿名函数
高阶函数 高阶函数:一个函数可以接收另一个函数作为参数 或 一个函数可以返回一个函数作为返回值,这种函数称之为高阶函数. #函数 add 接收 f 函数作为参数 >>> def ad ...
- Python 基础【第四篇】参数
程序运行避免不了需要一些参数来支持 那么如何让程序接收参数呢?这里先简单的用sys模块的参数 sys.argv[]方法来实现参数获取 1.用法: import sys //导入sys模块后期会详细 ...
随机推荐
- Spring Cloud Alibaba学习笔记(2) - Nacos服务发现
1.什么是Nacos Nacos的官网对这一问题进行了详细的介绍,通俗的来说: Nacos是一个服务发现组件,同时也是一个配置服务器,它解决了两个问题: 1.服务A如何发现服务B 2.管理微服务的配置 ...
- C# 不是序列化xml 转实体Model【原家独创】
public static T XmlConvertModel<T>(string xmlStr) where T : class, new() { T ...
- LunHui 的生命观
LunHui 的生命观 来源 https://www.zhihu.com/question/346510295 作者:齐天大圣链接:https://www.zhihu.com/question/346 ...
- MyBatis 常用词汇含义
JDBC:java Data Base Connection(Java与数据库连接): ORM:Object Relational Mapping(对象关系映射,简称ORM,或者O/RM,或者O/M ...
- MySQL中You can't specify target table '表名'('sn_app_label') for update in FROM clause错误解决办法
在有些时候有级联关系的数据放在了同一张表中,在写sql语句的时候可能会遇到这样的场景:我要插入两条数据,第一条是父节点,第二条是子节点,关联关系是父节点的自增长id:在写这样的sql语句时有可能就会出 ...
- Axios使用拦截器全局处理请求重试
Axios拦截器 Axios提供了拦截器的接口,让我们能够全局处理请求和响应.Axios拦截器会在Promise的then和catch调用前拦截到. 请求拦截示例 axios.interceptors ...
- Linux开机自动启动服务
当我们的Linux,关机后,或者重启后,有些服务需要人工启动才能有.为了解决这个问题,我找了一个办法,用一个脚本,开机启动想启动的服务. 方法一:(强烈推荐) 1.写一个脚本auto.sh vim ...
- java判定数据(对象)类型
1.说明一 int 是关键字,Integer是包装类,Number是所有数字了的基类(父类).所以,Number是Integer的基础,Integer是int的基础,也称Integer是int的原型类 ...
- 【转】Python之可变参数,*参数,**参数,以及传入*参数,进行解包
https://blog.csdn.net/cadi2011/article/details/84871401 1.定义了一个需要两个参数的函数 def print_str(first, second ...
- 使用LPCXpresso开发板调试外部的电路板
MCUXpresso IDE开发环境有一个主要的功能:支持LPC-Link2仿真调试器.通过这种方式,对于基于ARM的电路板,我可以使用这个功能强大的仿真调试器来调试.在NXP的众多LPCXpress ...