0 可变与不可变
1. 参数
1.1 必选参数
- 传入参数的值是按照顺序依次赋值给形参
def print_str(str):
print(str)
return
print_str('hello,sdsnzy!')
1.2 关键字参数
- 为了避免位置参数严格的位置要求,调用参数时可以指定对应形式参数的名字,这是关键字参数,它甚至可以采用与函数定义时不同的顺序.
def f(x,y):
print(x*y)
return
f(y=2,x=3)
#输出6
1.3 默认值参数
- 当调用方没有提供对应形式参数的值时,你可以指定默认形式参数值。
- 如果提供实参,在调用时会代替默认值
def f(x,y=5):
print(x*y)
return
f(3)
#15
def f(x,y=5):
print(x*y)
return
f(3,9)
#27
1.4 不定长参数
- 函数参数数目不确定
1)*
:星号将一组可变数量的位置参数集合成参数值的元组
def countnum(a,*b):
print(b)
print(type(b))
countnum(1,2,3)
2)**
:以字典形式存放
def countnum(a,**b):
print(b)
print(type(b))
countnum(1,x1=2,x2=3,x3=4)
2. 匿名函数
函数定义的另一种方法是用 lambda 表达式,它定义了一个匿名函数。lambda的一般形式是关键字lambda后面跟一个或多个参数,紧跟一个冒号:
,后面是一个表达式。作为表达式,lambda返回一个值。lambda 用来编写简单的函数,而def用来处理更强大任务的函数。
示例1:
#把lambda定义的匿名函数赋给函数result
result=lambda x,y,z:x*y*z
print(result(1,2,3))
#6
示例2:
result=lambda x,y,z=2:x+y+z
print(result(2,2,3)) # 7
print(result(2,2)) # 6