python详解python函数定义 def()与参数args可变参数*args关键参数**args使用实例
Posted zhaolide
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python详解python函数定义 def()与参数args可变参数*args关键参数**args使用实例相关的知识,希望对你有一定的参考价值。
Python内置了很多函数,可以直接调用。Python内置的函数可以通过官方文档查看。也可以通过help()查看帮助信息。函数名是指向函数对象的引用,把函数名赋给变量,相当于给函数起了别名。
1. 定义函数
- 使用def 函数名(参数):语句定义函数,在缩进块中编写函数体,返回值用return语句返回,如果没有return语句,返回值为None,等价于return None
- 根据需要,return语句也可以返回多个值组成的tuple,可以不写括号(),多个值之间用逗号’,’隔开,调用函数时可以用多个变量接受返回值,多个变量按位置赋值
- pass语句可以用做占位符,表示什么都不做,可用来定义一个空函数。在没想好具体语句的时候,可以用pass语句使代码先运行起来
2. 默认参数:用于定义函数,为参数提供默认值,调用函数时可传可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)
- 将变化小的参数作为默认参数,如果没有传入或改变默认参数的值,则使用默认参数。如果不需要改变默认参数,不用传入默认参数;需要改变默认参数时,传入默认参数即可
- 必选参数在前,默认参数在后。有多个默认参数时,调用的时候,既可以按顺序提供默认参数,也可以不按顺序提供部分默认参数。当不按顺序提供部分默认参数时,需要把参数名写上。表示该参数用传进去的值,其他默认参数继续使用默认值
实例:学生注册信息,设置姓名和性别为必选参数,设置年龄和城市为默认参数
- 默认参数必须指向不变对象。因为不变对象一旦创建,对象内部的数据就不能修改,这样就减少了由于修改数据导致的错误。此外,由于对象不变,多任务环境下同时读取对象不需要加锁,同时读一点问题都没有。在编写程序时,如果可以设计一个不变对象,那就尽量设计成不变对象。
由于列表是可变对象,为了固定默认参数的值,函数add_end()可做如下修改,用不可变对象None实现不改变默认参数的值:
3. 可变参数
- 传入的参数个数可变,可以为0到任意个。在参数前加*实现可变参数。 可变参数在函数调用时自动组装为一个tuple。
- 在列表和元组前加*,可以将列表或元组中的元素变为可变参数传入函数。
4. 关键字参数
- 将任意个含参数名的参数组装为一个dict。在参数前加**实现关键字参数
- 在dict前加**,可以将dict作为为关键字参数传入函数。传入的为dict的拷贝,在函数中的修改不会影响函数外的dict。
实例:定义函数person()包含必选参数name和age,还包含关键字参数kw:
5. 命名关键字参数
- 关键字参数可以传入任意多个名字,对名字没有限制。
如果要限制关键字参数的名字,需要在参数列表中使用,之后的关键字为命名关键字,只接受这些参数作为关键字名字。 - 如果已经有可变参数,不需要特殊分隔符*
调用函数时,必须传入参数名,位置可以颠倒:
该函数只接受两个位置参数,如果调用时不用函数名person(‘Tom’, 18, ‘Tianjin’, ‘china’), Python解释器认为传入了四个位置参数,会报错:
如果命名关键字参数有缺省值,调用时可以不传入该参数
6. 组合参数
- 不同类型的函数可以组合使用,参数定义的顺序必须为:必选【位置】参数,默认参数,英语拼写可变参数,命名关键字参数和关键字参数
定义变量:
输出:
func1中:
- d为可变参数,可以为空,d=3被认为是关键字参数;
-
e为命名关键字参数,调用时必须使用名字调用;
- 用*t, *l, *dic调用时,*t, *l的前三个元素作为必选参数a, b,
默认参数c,后面的部分作为命名关键字e=10,剩下的部分作为可变参数构成tuple d=(6, 7, 8, 9), **dic作为关键字参数。
func2中:
- d, e均为命名关键字,必须使用名字调用。
-
因为不包含可变参数,如果要使用tuple, list调用,tuple和list的长度必须不超过固定参数加默认参数的长度,所以只能使用t1进行调用。
以上是关于python详解python函数定义 def()与参数args可变参数*args关键参数**args使用实例的主要内容,如果未能解决你的问题,请参考以下文章