目录
def function (args1,args2,args3,...) :
function(args1,args2,args3,...)
【1】调用函数时,按照顺序 传递 相同个数 的参数(调用和定义时,形参、实参 一一对应)
出现:def function (args1,args2,...,argsn)
**临时调用,且业务逻辑简单? 没必要给函数取名字,所以用lambda函数(匿名函数)
**戏份很少,跑跑龙套,下次可能用不着了,所以不用给每个人起一个名字
【4】lambda x,y : x if x>=y else y
【1】lambda函数:包含1条表达式(避免滥用 抽象的简洁,加剧理解的困难)
** 明了胜于晦涩 复杂用常规def,简单一句话lambda
1.多个参数:(移动画笔x,y)args1,args2...
一、函数参数(多个参数)
1)结构
def function (args1,args2,args3,...) :
pass
function(args1,args2,args3,...)
【1】调用函数时,按照顺序 传递 相同个数 的参数(调用和定义时,形参、实参 一一对应)
#移动画笔
import turtle
#正确
def move (x,y):
turtle.penup()
turtle.goto(x,y)
turtle.pendown()
move (0,20)
#错
def move (x,y):
turtle.penup()
turtle.goto(x,y)
turtle.pendown()
move (8)
**函数 参数过多 怎么办?
二、默认参数
出现:def function (args1,args2,...,argsn)
def function (args=x) :
pass
function()
** 忘了传入参数,函数按照默认参数执行。
** 默认参数,放到非默认值参数后面。
【1】默认参数_参数传递不够,使用默认参数
def move1 (x,y=100):
turtle.penup()
turtle.goto(x,y)
turtle.pendown()
move1(60)
turtle.forward(100)
【2】默认参数_参数数量足够,可以覆盖默认参数
def move2 (x,y=100):
turtle.penup()
turtle.goto(x,y)
turtle.pendown()
move2(60,50)
turtle.forward(100)
【3】默认参数,放到非默认参数前面 #报错
def move2 (x=100,y):
turtle.penup()
turtle.goto(x,y)
turtle.pendown()
move2(60,50)
turtle.forward(100)
三、案例 (小人/太阳花 长大/缩小)
用color、sizes、hight=220 代替原来的代码(其中hight为默认参数)
#1.多个参数_一一对应
def people (color,size,hight) :
pass
turtle.forward(hight)
...
people ('blue',200,500)
#2.默认参数放最后,实参数也不用给
def people (color,size,hight=600) :
pass
turtle.forward(hight)
...
people ('blue',200)
四、无法确定 参数数量
例如:定义一个函数,计算所有数据之和(所有数据用 * )
1)一个参数:
#1. 1个参数
def my_int (a):
pass
my_int(3)
1)计算2个数据之和:
#2.1 2个参数
def my_int2 (a,b):
pass
my_int2(3,5)
#2.2 2个参数
def my_int2 (*a): #*args参数
pass
my_int2(3,5)
2)计算多个(但不知道几个数据)之和: #括号里用*a #打印出print(a)看看数据类型:元组
#3.1 多个(不知道几个)参数 相加
def add_int (*a): #*args参数
s=0
for i in a:
s+=i
print(s)
add_int(1,2,3,4,5)
#3.2 多个(不知道几个)参数 相加
def add_int (*a): #*args参数
pass
print(a) #打印出1个元组:(1, 2, 3, 4, 5)
add_int(1,2,3,4,5)
3) 1.实参数量 > 形参数量 #默认函数的值被传入的实参所替代
2.实参数量 < 形参数量 #显示出默认函数
3.分析各个参数 #*a 是解包操作,它会将 元组 a 中的元素逐个解包并打印出来
#3.3_1实参数量 多于 形参数量 #默认函数的值被传入的实参所替代
def add_int (x,y,z=9,*a):
pass
print(x,y,z) #10 20 30
print(x,y,z,*a) #默认参数z被实参30覆盖10 20 30 40 50 60 70 80 90
add_int(10,20,30,40,50,60,70,80,90)
#3.3_2实参数量 少于 形参数量 #显示出默认函数
def add_int (x,y,z=9,*a):
pass
print(x,y,z) #10 20 30
print(x,y,z,*a) #默认参数被显示出来,10 20 9
add_int(10,20)
#3.3_3分析各个参数 #*a 是解包操作,它会将元组 a 中的元素逐个解包并打印出来,与 x、y、z 并列地打印在一行中。
def add_int (x,y,z=9,*a):
pass
print(x)
print(y)
print(z) #默认参数
print(a) #这里是a:元组,有括号 #之前*a:不定长参数(可变参数),无括号
print(x,y,z,*a) #*a打印时会解包元组中的元素
add_int(10,20,30,40,50,60,70,80,90)
**临时调用,且业务逻辑简单? 没必要给函数取名字,所以用lambda函数(匿名函数)
五、lambda函数
**戏份很少,跑跑龙套,下次可能用不着了,所以不用给每个人起一个名字
lambda x,y : x if x>=y else y
【1】lambda函数:是一个表达式(一般形式是:关键字)
【2】lambda后:跟1个或多个参数
【3】:冒号表示接下来的内容,一个表达式
【4】lambda x,y : x if x>=y else y
如果x>=y 则:x
否则:y
【5】函数没有名字,怎么使用?(绑定名字,可以调用)
【6】优点:代码更加简洁
例如:谁大返回谁?(相等也可返回,不会报错)
function=lambda x,y:x if x>=y else y
#function(3,5) #打印报错 #为什么错?下节课函数的返回值
print(function(10,5)) #谁大选谁:10
#2.2function复杂
def function(x,y):
if x>=y:
print(x)
else:
print(y)
function(5,10) #返回10
【1】lambda函数:包含1条表达式(避免滥用 抽象的简洁,加剧理解的困难)
** 明了胜于晦涩 复杂用常规def,简单一句话lambda
总结:
1.多个参数:(移动画笔x,y)args1,args2...
2.参数太多_默认参数:(忘传/多传/前后位置)x=10
3.案例: 默认参数放最后,实参可给/可不给(小人~)
4.无法确定参数数量:(计算所有数据 之和)*a ,
(1/2/多)+(分析a/*a)+(实参<= / >=形参)
5.lambda函数:表达式、简洁
lambda x,y : x if x>=y else y 三元操作符
function=lambda x,y:x if x>=y else y #function(3,5) #打印报错 #为什么错?下节课函数的返回值 print(function(5,10)) #谁大选谁:10