函数:不定长参数、匿名函数及偏函数

1、不定长参数(元组)

不定长参数:

概念:能够在函数内部处理比形参个数多的实参

加了*的变量,可以存放多个实参

加了*的形参,数据类型为元组类型,如果调用时未传入参数,默认为一个空元组, 如果传入了实参,将按传入顺序,依

次放到元组中

def fun1(*args):
    print(args)
fun1()                   # ()
fun1(1)                  # (1,)
fun1(1, 2, 3)            # (1, 2, 3)

注:定义函数形参时,如果*args没有放在参数的最后,则函数调用时需要使用关键字调用

2、不定长参数(字典)

加了**的变量,可以存放多个实参

加了**的形参,数据类型为字典类型,如果调用时未传入参数,默认为一个空字典,如果传入了实参,将按传入顺序,依次放

到字典中

def fun1(**kwargs):
    print(kwargs)

fun1()
# 函数调用传入参数  key = value
fun1(a = 1)
fun1(a = 1, b = 2, c = 3)

3、匿名函数

在python一般需要使用def关键字来定义函数,而匿名函数不需要使用def关键字,取而代之的时lambda关键字

匿名函数:

不适用def关键字定义,用lambda关键字来创建

语法格式:

lambda 参数1,参数2...参数n:表达式

表达式:

只能是一条简单的语句,不能包含循环、return、yield等,允许包含最简 单if语句,如果表达式为原子类型,使用小

括号括起来

# 当定义了了lambda,使用变量接收该表达式
# 函数的定义
res = lambda num1, num2:num1 + num2  #使用变量res来接收函数
# 函数的调用
print(res(2, 3))


# if- else在lambda中使用
# 语法格式:结论1 if 条件表达式 else 结论2
# 解释:当条件表达式为真时,取结论1;当条件表达式为假时,取结论2
res1 = lambda num:"真棒" if num == 1 else "辣鸡"
print(res1(1))
print(res1(0))

4、偏函数

偏函数:将函数的某个参数直接固定一个值,返回一个新的函数

1、首先仿写一个偏函数

def newInt(num0):
    return int(num0, base=2)   # base为设置进制格式,这里设置为二进制,表示num0为二进制格式
   
print(int("11"))               # 11
print(newInt("11"))            # 3

我们通过定义函数固定int的参数base的值为2

2、偏函数

导入functools模块,使用functools.partial创建偏函数

1语法格式: functiontools.partial(即将使用或更改的原函数名称,原函数各个参数的值)

第一个参数:原函数的函数名称

第二个参数开始:为原函数固定的参数的值,如果格式为关键字的格式,直接给 该参数赋值;如果不是关键字格式,从左向

右依次给原函数的形参赋值,如果偏 函数中的参数个数少于原函数的形参个数,在调用偏函数时,函数中的参数依 此赋值

给原函数没有值的形参(原函数的形参对应的实参个数要求一致)

import functools   # 导入functools模块
int2 = functools.partial(int, base=2)
print(int2("111"))           # 7

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值