函数补充-匿名函数

函数:

关于函数的文章地址:http://t.csdnimg.cn/KYuaf 

匿名函数:

[了解]lambda语法

==目标:==了解匿名函数的语法。

定义匿名函数需要使用lambda关键字,可以创建小型匿名函数。

匿名函数表示没有名字的函数,这种函数得名于省略了用def关键字声明函数的标准步骤。

定义匿名函数语法:

lambda 参数列表 : 表达式

调用匿名函数语法:

函数名 = lambda 参数列表 : 表达式
函数名([参数列表])

例如,一起来完成:

(1)求解两个数之和;

(2)使用def定义函数,完成求和操作;

(3)使用匿名函数简化函数求和操作。

# 1.定义求和函数
 def get_sum(a, b):
     c = a + b
     return c
 # 2.调用
  print(get_sum(19,23))  # 调用了
 print(get_sum)  # id  <function get_sum at 0x000001E730507280>
​
​
# 3.匿名函数  --对比
 get_sum = lambda a,b:a+b
 print(get_sum(20,10))
 # 说明
 print(get_sum)  # id  十六进制  <function <lambda> at 0x000001EBD4327280>

==总结:==

(1)当且仅当只需要调用使用一次时,可以优先使用()函数来完成。==A、匿名函数==;B、def定义的函数;

(2)注意:匿名函数在实际应用中使用较少,了解即可。

[了解]lambda的应用

==目标:==了解lambda表达式的应用。

在实际应用中,为便于简化函数传递处理,我们可以使用lambda表达式作为参数进行传递,但要注意:传递的是一个引用。

再来看一下匿名函数的语法。

定义语法:

lambda 参数列表 : 表达式

调用语法:

函数名 = lambda 参数列表 : 表达式
函数名([参数列表])

例如,一起来完成:

(1)把lambda表达式当作参数传递给函数;

(2)求解两个数之和,注意:在函数中定义变量并传递。

# 1.定义函数
def get_sum(func):
    print("==================")
    # print(f"输出func的引用值:{func}")  # 十六进制的引用值
​
    x = 100
    y = 998
    print(f"求和:{func(x,y)}")
​
    print("==================")
​
# 2.调用 -传递匿名函数过去
# 可以把引用当作参数直接传递   -闭包
get_sum(lambda a,b:a+b)

==总结:==

(1)当要定义一个匿名函数时,需要使用()关键字;==A、lambda==;B、def

(2)当完成一个功能简单的需求时,可以使用匿名函数,而当需求较复杂时,不建议使用匿名函数。

【==思考==】使用函数形式来求解某天是该年的第几天?比如,2023年1月3日是2023年的第3天。

提示:要区分闰年、平年,闰年指的是能被4整除且不能被100整除,或者能被400整除的年份。

# 1.定义函数: 求是否是闰年
def is_run_year(year):
    """
    判断是否是闰年
    :param year: 年份
    :return: 是闰年 True;   不是闰年: False
    """
    if (year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0):
        return True
    return False
​
# 2.求解第几天: 之前月份的总天数+当前日期
def get_days(year, month, day):
    days = 0
    # 判断年份
    # if is_run_year(year):
    if is_run_year(year) == True:
        day_lists = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30]
    else:
        day_lists = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30]
    # 通过月份数求解之前月份的总天数
    temp_ret = 0
    i = 0
    while i < month:
        temp_ret += day_lists[i]
        i += 1
    # +当前日期
    days = temp_ret + day
    return days
​
# 3.输入年月日、调用函数
in_year = int(input("请输入年份:"))
in_month = int(input("请输入月份:"))
in_day = int(input("请输入日期:"))
print(f"{in_year}年{in_month}月{in_day}日是{in_year}年的第{get_days(in_year,in_month,in_day)}天.")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值