“非法”操控lambda(python)

能过python解释器关卡即是合法脚本代码,偶尔的“违规”操控也是一种唯美。


(笔记模板由python脚本于2024年11月13日 11:18:21创建,本篇笔记适合熟悉python的lambda操控的coder翻阅)


【学习的细节是欢悦的历程】


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


等风来,不如追风去……


能过解释器关卡即合法代码
“非法”操控lambda
(偶尔违规操控对象也是一种唯美)


本文质量分:

95 95 95

本文地址: https://blog.csdn.net/m0_57158496/article/details/143735317

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ “非法”操控lambda
    • 1、我的两个“小工具”
      • 1.1 使用 lambda 的优点
      • 1.2 使用 def 的优点
      • 1.3 针对小工具的具体情况
    • 2、我在“非法”操控lambda
      • 2.1 lambda 作为“一次性”函数
      • 2.2 lambda 的“命名”
      • 2.3 lambda 与 def 的比较
    • 3、我在“非法”操控lambda
      • 3.1 “常量函数”的概念
      • 3.2 在代码中的应用
      • 3.3 我的两个“小工具”
      • 总结
    • 4、我在“非法”操控lambda
      • 4.1 **可读性和可维护性**
      • 4.2 **功能限制**
      • 4.3 **调试困难**
      • 4.4 **代码重用性**
      • 4.5 **命名约定**
      • 结论
    • 5、极尽简单的逻辑处理
    • 6、“违规”与“非法”
    • 7、ai学伴的支持


◆ “非法”操控lambda


1、我的两个“小工具”


  • 两个小工具
    
    # 闰年判定函数 #
    is_leap_year = lambda year: year%400==0 or (year%4==0 and year%100!=0)
    
    # 计算从2018年起的闰年总数(不含结束年份)#
    sum_leaps = lambda year: sum(1 for i in range(2018, year) if is_leap_year(i))
    
    

  对于我“解题工程”中的这两个小模块(永远不需扩展功能),是不是用匿名函数lambda比用def自定义更为“简洁”?🧐想听听您的解析。🙏


  • ai学伴回应
    在您的“解题工程”小模块中,使用 lambda 匿名函数确实提供了简洁性,特别是在处理简单的操作时。

以下是使用 lambda 与使用 def 定义函数的一些比较点:


1.1 使用 lambda 的优点

  • 简洁性: lambda 允许您在一行代码中定义函数,这对于简单的操作来说非常方便,可以减少代码量。
  • 内联定义: lambda 可以在需要的地方直接定义,无需在代码的其他部分寻找或跳转到函数定义。
  • 无需命名: 对于只使用一次或两次的函数,使用 lambda 可以避免为函数命名,减少命名空间的污染。

1.2 使用 def 的优点

  • 可读性: 对于复杂的函数,使用 def 可以提供更清晰的代码结构,包括文档字符串、参数注解和多行逻辑。
  • 可维护性: def 定义的函数更容易进行调试和扩展,因为它们可以有多个语句和更复杂的逻辑。
  • 可重用性: 通过命名, def 定义的函数可以在代码的多个地方重用。

1.3 针对小工具的具体情况

  is_leap_year 函数非常简单,只包含一个条件表达式,使用 lambda 确实足够且简洁。

  sum_leaps 函数虽然使用了生成器表达式,但它也相对简单,使用 lambda 可以保持代码的紧凑性。

  在这个情况下,使用 lambda 确实比使用 def 更为简洁。然而,这并不意味着 lambda 总是比 def 更好。


  • 以下是一些考虑因素:
    如果函数的逻辑变得复杂,或者需要添加文档字符串来解释其行为,那么使用 def 可能更合适。

    如果函数需要被其他部分的代码重用,或者可能会在未来扩展,那么使用 def 定义会更易于维护。

  总的来说,对于您的这两个小模块,使用 lambda 是合理的,因为它们简单且不需要扩展。只要保持代码的可读性,使用 lambda 可以使得代码更加简洁。👍🏻



回页目录


2、我在“非法”操控lambda


  • 我的观点
    实际上,匿名的lambda是针对“一次性”直接使用而言,比如list.sort()的“排序规则”参数。但我的理解是,lambda它不仅仅是匿名的,它对于定义极尽简单的逻辑(如我这里的两个“能用”小工具),简单的通过变量命名,也就是对匿名的lambda别名,这就有了def自定义函数一样的效果不是么!😎

    对于定义极尽简单的逻辑,lambda比def更“明白懂事儿”😋😋

  • ai学伴回应
    您的理解是正确的。 lambda 函数虽然通常被称为匿名函数,但它们确实可以通过赋值给变量来“命名”,从而在一定程度上模拟 def 定义的函数。这样的做法确实使得 lambda 函数在处理极简逻辑时,既保持了简洁性,又获得了类似命名函数的效果。

以下是您提到的几个点的详细解释:

2.1 lambda 作为“一次性”函数

  lambda 函数经常用于那些只需要一次计算或作为参数传递给其他函数的情况,比如排序、映射和过滤等操作。


2.2 lambda 的“命名”

  当您将 lambda 函数赋值给一个变量时,这个变量实际上就充当了该 lambda 函数的名称。这样,您可以在代码的其他部分通过这个变量名来重复使用这个 lambda 函数。


2.3 lambda 与 def 的比较


  对于极简逻辑, lambda 确实可以提供一种更直接、更紧凑的方式来定义函数,这使得代码在视觉上更加简洁,易于理解。
使用 <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦幻精灵_cq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值