您的位置:首页 > 其它

函数的参数 , 不定长参数 , 万能函数 , 匿名函数 , zip函数 , 装饰器

2020-02-02 15:00 525 查看

一 函数的参数

位置参数【又称必选参数】
传递参数的顺序与定义的顺序有关,必须按照定义的顺序来进行传递。
传递参数的个数与参数的个数必须保持一致。
关键字参数:
指函数调用的时候,可以通过"键-值"的形式来加以指定,
可以清除位置关系。

当出现位置参数与关键字参数的时候,需要将位置参数写在关键字参数前面
默认参数
定义函数的时候,我们可以给参数提供默认值,调用函数的时候可以传递此参数
可以不传,当传递此参数的时候,函数则使用传递的参数,若不传递则使用默认值。
注意:
1.若默认参数与位置参数同时存在的时候,位置参数要写在默认参数的前面
2.给定默认参数的时候,默认参数需要指向不可变对象。

二 不定长参数

特点:能处理比声明时候更多的参数【传递多少参数,处理多少参数,不传递不处理】

不定长参数分为两种:

包裹位置参数:
使用:*变量名  一般用*args
功能:可以收集除了必选参数以外剩余的位置参数,按照元组来进行处理

包裹关键字参数:
使用:**变量名  一般用**kwargs
功能:收集除定义的变量的关键字参数之外,剩余关键字参数。
包裹关键字参数只处理剩余的关键字参数,收集作为字典来进行处理。

注意:当位置参数【必选参数】,默认参数,包裹位置参数,包裹关键字参数同时存在时
一般的顺序为:
位置参数,默认参数,包裹位置参数,包裹关键字参数

三 万能函数

def func(*args,**kwargs):
pass

四 匿名函数

**定义:**一类无需定义标识符的函数

语法: lambda 参数列表: 表达式

lambda: 声明此函数为匿名函数

参数列表中,参数与参数之间使用逗号隔开

表达式的值就是返回值

特点:结构简单,无需定义名字,不会命名冲突

调用:将匿名函数赋值给一个变量,通过调用这个变量来调用这个函数

五 zip函数

功能:将iter对象进行打包处理,他可以将打包好的对象进行解包处理

语法:zip(iter1,iter2,…) 以元素最少的可迭代对象为基准,返回zip对象[迭代器]

*解包: zip(zipobj) 使用zip函数,在zipobj前面添加*号,我们就可以对其进行解包处理,得到解包后的zip对象[迭代器]

六 装饰器

**定义:**在代码运行的期间,动态增加功能方式,我们称之为装饰器.

最简单的装饰器:

def outer(func):
def inner():
#增加的功能
return func()
return inner
外函数的作用:
1.将函数作为参数,传入到装饰器中
2.将装饰好的函数,作为一个替代版的函数返回.
[将inner函数代替了func]

装饰器的使用:

@outer
def func():
pass
@outer的作用:
1.将func传入到装饰器中
2.再调用func的时候,相当于调用outer返回的inner函数

复杂点的装饰器:
def outer(func):
def inner(参数列表):
#添加增加的功能
return func(参数列表)
return inner

注意:
1.使用内函数来接收被装饰函数的参数
2.调用被装饰的函数的时候,需要将参数传递进去。

装饰器的使用与被装饰的函数有关系,若被装饰的函数不存在参数,则使用简单装饰器即可,若被装饰的函数存在参数,则使用复杂点的装饰器.

万能装饰器:
def outer(func):
def inner(*args,**kwargs):
#
retrun func(args,kwargs)
return inner
  • 点赞
  • 收藏
  • 分享
  • 文章举报
wx_py 发布了9 篇原创文章 · 获赞 0 · 访问量 352 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: