函数高级

一、默认参数

1、默认参数概念

默认参数指函数/方法在定义时为形参赋值,对应的形参称为默认参数。

默认参数是一个参数定义期的概念,与调用无关。

2、默认参数的作用

如果参数定义默认参数,在调用函数/方法时,未对该参数进行传值,则使用默认值作为该参数的值。

3、默认参数基本语法
定义格式:
def 函数名(形参1 = 值1,…):
函数体
……
调用格式一(同普通参数,无特殊):
函数名(实参) 使用实参作为形参的值,不使用默认值
调用格式二:
函数名() 使用默认值作为形参的值
复制代码

代码演示:

def test(a = 2,b = 5):
print(a)
print(b)
test()
复制代码

运行结果:

2
5
复制代码
4、注意事项
  • 1.默认参数的定义必须在位置参数的右侧

  • 2.默认参数在调用传值时,按照位置参数进行对待,从左至右依次赋值,不能跳过左侧的某个参数直接为后面的参数赋值

二、关键字参数

1、关键字参数概念

函数/方法在调用时为指定名称的形参进行赋值,对应实参称关键字参数。
关键字参数是一个参数调用期的概念,与定义无关。

2、关键字参数的作用

按名称确认实参为指定的形参赋值。

3、关键字参数基本语法

定义格式(同普通参数定义,无特殊):

def 函数名(形参 ,…):
函数体
……
复制代码

调用格式:

函数名( 形参名 = 实参)
复制代码

代码演示:

def test(a = 2, b = 5):
print(a)
print(b)
test(b = 100)
复制代码

运行结果:

2
100
复制代码
4、注意事项
  • 1.关键字参数必须出现在位置参数的后面
  • 2.不允许使用关键字参数对同一个形参进行多次赋值
  • 3.关键字参数既可以为位置参数赋值,也可以为默认参数赋值。通常使用关键字参数解决默认参数选择性赋值问题。

三、可变参数

1、可变参数的概念

函数/方法在定义时,定义一个特殊的形参,用于接收调用时传入的任意数量的实参,对应的形参称为可变参数。

可变参数是一个参数定义期与调用期都有效的概念。

2、可变参数的作用

简化函数定义过程,定义可以接收无数个实参的形参

形参接受到的数据,无论数量多少,包装成一个元组对象

3、可变参数基本语法

定义格式:

def 函数名(*args ,…):
函数体
……
复制代码

调用格式(同普通参数,无特殊):

函数名( 实参1,…… )
复制代码

代码演示:

def test(*args):
print(args)
test(1,2,3,4,5,6,7,6)
复制代码

运行结果:

(1, 2, 3, 4, 5, 6, 7, 6)
复制代码
4、注意事项
  • 1、可变参数在一个函数/方法定义中只能出现一个
  • 2、可变参数只能出现在位置参数的后面,位置参数在左侧,可变参数在右侧
  • 3、关键字参数只能出现在位置参数的后面,赋值时必须使用关键字参数传值,否则值会被可变参数接收
  • 4、定义函数的参数时,先定义位置参数,再定义可变参数,最后定义默认参数

代码演示:

def test(a, b, *args, c = 1):
pass
复制代码

四、字典参数

1、字典参数的概念

函数/方法在定义时,定义一个特殊的参数,用于接受未定义直接使用的关键字参数,对应的形参称为字典参数。

2、字典参数的作用

简化函数定义过程,接收未定义直接使用的关键字参数。
在多层级调用间进行关键字参数的逐级传递。

未定义的关键字参数,无论数量多少,接收后包装成一个字典对象。

3、字典参数基本语法

定义格式:

def 函数名(**kwargs,···):
函数体
······
复制代码

调用格式:

函数名(未定义的变量名1 = 实参1,未定义的变量名2 = 实参2,…… )
复制代码

代码演示:

def test(**kwargs):
print(kwargs)
test(a = 1,b = 2,c = 6)
复制代码

运行结果:

{'a': 1, 'b': 2, 'c': 6}
复制代码
4、注意事项
  • 1.字典参数在一个函数/方法定义中只能出现一个
  • 2.定义函数的参数时,先定义位置参数,再定义可变参数,然后定义默认参数,最后定义字典参数

代码演示:

def test(a, b, *args, c = 1,**kwargs):
pass
复制代码
5、其他

所有的容器都支持解包操作,格式:*容器变量名

五、递归函数

1、递归函数概念

函数/方法在执行过程中出现了对自身函数/方法的调用,称该过程为递归调用,称这样的函数为递归函数。

2、递归函数基本语法

同普通函数

3、递归函数定义要求

1、函数体中具有对自身函数的调用
2、函数体中具有明确的函数执行结束判定条件

4、递归函数调用要求

Python语言中函数调用最大层级为1000层,超过该层级,程序将报错(不同语言设置不同)

六、匿名函数

1、匿名函数概念

匿名函数即没有名称的函数,在python语言中,匿名函数是使用lambda关键字定义的一个特殊表达式,也称为lambda表达式。

2、匿名函数基本语法
格式一:
定义: 函数名 = lambda 形参 : 返回值
调用:结果 = 函数名(实参) 格式二:
定义并调用: 结果 = (lambda 形参 : 返回值)(实参)
复制代码
3、匿名函数特殊语法
无参格式:	结果 = (lambda :返回值)()

多返回值格式:  无,可使用数据存储模型返回多个数据
无返回值格式:无,必须有具体值或结果为None
复制代码

转载于:https://juejin.im/post/5c18bb6a6fb9a049ca374917

最新文章

  1. Android 数据适配器
  2. Weblogic概念与基础
  3. 老李分享:Uber究竟是用什么开发语言?
  4. linkin大话java
  5. 1.2 Python开发环境
  6. Android Studio Gradle 多渠道自动打包,动态修改HostUrl,签名apk,混淆配置详解
  7. 【easy】479. Largest Palindrome Product
  8. linux中的&&,|| 与 () 命令
  9. iOS证书申请及使用详细说明
  10. day-13装饰器
  11. 解决 docker 报错: Error starting daemon: error initializing graphdriver: backing file system is unsupported for this graph driver
  12. DAX/PowerBI系列 - 累计总计(Cumulative Total)
  13. hbase大规模数据写入的优化历程 ,ZZ
  14. 中国移动物联网ONENET平台数据本地采集工具
  15. POJ3258-River Hopscotch-二分答案
  16. sql server 根据身份证号计算出生日期和年龄的存储过程
  17. Ajax异步请求原理的分析
  18. oracle-srvctl-output
  19. NPOI将DataGridView中的数据导出+导出Chart图表图片至Excel
  20. 按键精灵如何调用Excel及按键精灵写入Excel数据的方法教程---入门自动操作表格

热门文章

  1. CSS 基础(二)
  2. django自定义404和500页面
  3. Linux 下如何隐藏自己不被发现?
  4. 10.6 IoStudentManager
  5. 十九种Elasticsearch字符串搜索方式终极介绍
  6. leetcode c++做题思路和题解(4)——队列的例题和总结
  7. 面试题 ~ 什么是RESTful?
  8. 从前端到后端实现弹幕的过程(jsp/Jquery.barrager.js)
  9. 别再问我 new 字符串创建了几个对象了!我来证明给你看!
  10. delphi使用ADO在sql数据库存取图片的方法