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

本文深入解析了函数参数的各种类型,包括位置参数、关键字参数、默认参数和不定长参数,阐述了它们在函数调用中的作用及注意事项,同时也介绍了万能函数和匿名函数的概念,最后讲解了装饰器的使用和原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

当出现位置参数与关键字参数的时候,需要将位置参数写在关键字参数前面
默认参数
定义函数的时候,我们可以给参数提供默认值,调用函数的时候可以传递此参数
可以不传,当传递此参数的时候,函数则使用传递的参数,若不传递则使用默认值。
注意:
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值