Python_level2.4 函数进阶

目录

一、函数参数(多个参数)

1)结构

def function (args1,args2,args3,...) :

        pass

function(args1,args2,args3,...)

【1】调用函数时,按照顺序 传递 相同个数 的参数(调用和定义时,形参、实参 一一对应)

**函数 参数过多 怎么办?

二、默认参数

出现:def function (args1,args2,...,argsn)

def function (args=x) :

        pass

function()

【1】默认参数_参数传递不够,使用默认参数

【2】默认参数_参数数量足够,可以覆盖默认参数 

【3】默认参数,放到非默认参数前面  #报错 

三、案例 (小人/太阳花 长大/缩小)

四、无法确定 参数数量

**临时调用,且业务逻辑简单? 没必要给函数取名字,所以用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】优点:代码更加简洁

例如:谁大返回谁?(相等也可返回,不会报错)

【1】lambda函数:包含1条表达式(避免滥用 抽象的简洁,加剧理解的困难)

** 明了胜于晦涩 复杂用常规def,简单一句话lambda

总结:

1.多个参数:(移动画笔x,y)args1,args2...

2.参数太多_默认参数:(忘传/多传/前后位置)

3.案例: 默认参数放最后,实参可给/可不给(小人~)

4.无法确定参数数量:(计算所有数据之和)*a

5.lambda函数:表达式、简洁


一、函数参数(多个参数)

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值