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