python- 函数高级
函数高级
一、默认参数
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
python- 函数高级的更多相关文章
- python函数高级特性
掌握了Python的数据类型.语句.函数,基本可以编写出很多有用的程序了.但是Python中,代码不是越多越好,而是越少越好.代码不是越复杂越好,而是越简单越好.基于这一思想,我们来介绍python中 ...
- 五年级--python函数高级运用
一.装饰器 二.迭代器 三.生成器 四.练习 一.装饰器 1.1 闭包函数用法 # 需求: # 执行一个函数前需要认证是否登录,如果登录则不需再登录. # 只认证一次,后续操作无需认证 # 要求认证使 ...
- Python —— 函数高级特性(切片、迭代、列表生成式、生成器、迭代器)
一.切片(Slice) 在很多编程语言中,针对字符串提供了很多截取函数(i.e. substring),目的就是对字符串切片.python中没有针对字符串的截取函数,需要通过“切片”来完成. 取一个 ...
- Python函数高级
函数对象 在面向对象编程中 一切皆对象 函数在python中是第一类对象 函数可以这么用 可以被引用 def func(): print('hello world !') f=func f() 可 ...
- 12、Python函数高级(命名空间、作用域、装饰器)
一.名称空间和作用域 1.命名空间(Namespace) 命名空间是从名称到对象的映射,大部分的命名空间都是通过 Python 字典来实现的. 命名空间提供了在项目中避免名字冲突的一种方法.各个命名空 ...
- python 函数高级功能
闭包 我们可以将闭包理解为一种特殊的函数,这种函数由两个函数的嵌套组成,且称之为外函数和内函数,外函数返回值是内函数的引用,此时就构成了闭包. # 闭包 # 外部函数的参数被内部函数引用,内部函数对外 ...
- Python函数装饰器高级用法
在了解了Python函数装饰器基础知识和闭包之后,开始正式学习函数装饰器. 典型的函数装饰器 以下示例定义了一个装饰器,输出函数的运行时间: 函数装饰器和闭包紧密结合,入参func代表被装饰函数,通过 ...
- 进击的Python【第七章】:Python的高级应用(四)面向对象编程进阶
Python的高级应用(三)面向对象编程进阶 本章学习要点: 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 一.面向对象高级语法部分 静态方法 ...
- 进击的Python【第六章】:Python的高级应用(三)面向对象编程
Python的高级应用(三)面向对象编程 本章学习要点: 面向对象编程介绍 面向对象与面向过程编程的区别 为什么要用面向对象编程思想 面向对象的相关概念 一.面向对象编程介绍 面向对象程序设计(英语: ...
- 进击的Python【第五章】:Python的高级应用(二)常用模块
Python的高级应用(二)常用模块学习 本章学习要点: Python模块的定义 time &datetime模块 random模块 os模块 sys模块 shutil模块 ConfigPar ...
随机推荐
- Kubernetes Pod钩子
目录 1.Pod容器钩子最终目的 2.何为Pod容器钩子 3.基于PostStart演示 4.基于PreStop演示 5.优雅停止Java应用 1.Pod容器钩子最终目的 之前在生产环境中使用dubb ...
- 使用Putty登录亚马逊云主机
亚马逊云主机配置之后会提示 提供一个 pem证书, 打开 SSH 客户端.(了解操作方法 使用 PuTTY 连接) 找到您的私有密钥文件(test001.pem).向导会自动检测您用于启动实例的密钥. ...
- Github基础使用教程 ———功能介绍
Github基础使用手把手教程 --功能介绍 本人Github小白,刚摸索的差不多,记录一下经验,小白写出来的东西各位萌新一定看的懂啦~ 本篇内容主要针对想快速学会使用Github这个强大工具的 ...
- 怎样让scratch里的人物两腿走动
需要人物角色至少有两个“造型”,表现走路时的两个动作.以默认的“小猫”觉色为例,它有两个“造型”,可以用来表现奔跑的动作. 但是要想让小猫跑起来,需要脚本来实现,简单跑动脚本如下 scratch学习视 ...
- GlusterFS 4.1 版本选择和部署
GlusterFS 4.1 版本选择和部署 目录 GlusterFS 4.1 版本选择和部署 1 前言相关 1.1 glusterfs优势 1.2 版本选择 1.3 volume知识 2 服务部署 2 ...
- C语言 加密解密
加密解密算法,对于一个未接触加密的人来说,这听起来是多么可望而不可及,但是只要我们理解了加密的本质,对于它就没那么陌生了,更难的是加密的算法,而不是加密这个术语上! 我们知道,文本文件是以ascii码 ...
- java网络编程socket\server\TCP笔记(转)
java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04| 分类: Socket | 标签:java |举报|字号 订阅 1 TCP的开销 a ...
- 表字段或表名出现Mysql关键字或保留字导致问题 Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have
MySQL 5.7使用的关键字和保留字 https://dev.mysql.com/doc/refman/5.7/en/keywords.html 当我们建表的时候如果使用了关键字或者保留字,则在执行 ...
- 实战|使用Spark Streaming写入Hudi
欢迎关注微信公众号:ApacheHudi,解锁下一代数据湖技术 1. 项目背景 传统数仓的组织架构是针对离线数据的OLAP(联机事务分析)需求设计的,常用的导入数据方式为采用sqoop或spark定时 ...
- SpringBoot实现图片上传demo&Nginx进行代理显示
公司项目需要一个图片上传的功能,就图片能上传到服务器(公司用的windows服务器),然后nginx能进行代理访问到就行了,先简单介绍一下nginx,然后再来实现功能. 一.nginx简介 Nginx ...