当前位置: 首页 > news >正文

python的lambda实用技巧

lambda表达式

lambda表达式是一种简化的函数表现形式,也叫匿名函数,可以存在函数名也可以不存在。

使用一行代码就可以表示一个函数:

# 格式
lambda arg[参数] : exp[表现形式]
# 无参写法
lambda : "hello"
# 一般写法
lambda a,b,c : a+b+c

1.配合map()内置函数

map():用于可迭代对象中每个元素所指定的函数,返回新的迭代器

书写格式:

# 返回参数为`list`
list = map(function[函数],iterable[可迭代对象])

使用示例:

# 普通使用
strings = ["hello","world","computer"]
demo = map(str.upper,strings)
print(list(demo))
# 配合lambda使用 切割字符串
demo2 = map(lambda x: x[2:], strings)
print(list(demo2))

在这里插入图片描述

2.配合Filter()函数使用

filter():用于筛选数组中满足条件的值,并返回一个新的可迭代对象。

语法格式:

# 返回参数为list
list = filter(function[判断函数],itrable[可迭代对象])

配合lambda函数使用示例:

number =[1,2,3,4,5,6,7]
pos = filter(lambda x :x>3,number)
print(pos)

在这里插入图片描述

3.配合reduce()函数使用

这个函数不作为function中的函数,是在functools模块中的一个函数。

reduce():具体功能是作用于对一个迭代对象的元素进行积累(累加,累乘)等操作。

语法格式:

from functools import reduce
# 返回值是一个数字
reduce(function[函数] , iterable[可迭代对象], [value][可选对象,运行函数时的初始值])

使用示例:

from functools import reduce
value = reduce(lambda x, y: x * y, [1, 2, 3, 4, 5])
print(value)

在这里插入图片描述

python装饰器

decorators高级功能,允许动态修改函数或类的行为。

接收一个函数作为参数,返回一个新的函数或修改原来的函数。

wraps:在Python的装饰器模式中,@wraps(func) 是一个来自 functools 模块的装饰器,它的作用是更新被包装函数(即被装饰的函数)的一些元数据,使其在被装饰后仍然保留原有的函数名、文档字符串、注解等属性。

语法格式:

# 这个是一个注释器
@decorators_name
# 内置装饰器
# 静态方法
@staicmethod 
@类方法
@classmethod

语法格式:

def decorat_function(orange_function):def web(*arg):befor_call_code() # 执行函数前添加result = orange_function(*arg)after_call_code() # 执行函数后添加# 使用装饰器
@decorators_function
def target_function(arg1,arg2):pass

使用示例:

def time_decorator(func):@wraps(func)def wrapper(*args, **kwargs):start_time = time.time()result = func(*args, **kwargs) #获得函数的名称,以及函数参数end_time = time.time()print(f"Function {func.__name__} executed in {end_time - start_time:.4f} seconds")return resultreturn wrapper@time_decorator#使用装饰器
def my_function():print("Hello, World!")time.sleep(1)  # 模拟一些耗时的操作
# 调用函数
my_function()

在这里插入图片描述

使用示例[带参数的接收器]:

# 将参数传递给后续使用的函数
def repeat_decorator(n):  def decorator(func):  @wraps(func)  def wrapper(*args, **kwargs):  for _ in range(n):  result = func(*args, **kwargs)  return result  return wrapper  return decorator  @repeat_decorator(3)  #使用装饰器
def say_hello():  print("Hello!")  # 调用函数  
say_hello()

在这里插入图片描述

使用示例[类装饰器]:

def add_method_decorator(cls):  # 动态地为类添加一个新方法  def new_method(self):  print("This is a new method added by the decorator.")  # 使用setattr将新方法添加到类中  setattr(cls, 'new_method', new_method.__get__(None, cls))  # 返回修改后的类  return cls  # 使用@语法应用类装饰器  
@add_method_decorator  
class MyClass:  def existing_method(self):  print("This is an existing method.")  # 创建类的实例  
obj = MyClass()  # 调用原始方法  
obj.existing_method()  # 输出: This is an existing method.  # 调用由装饰器添加的新方法  
obj.new_method()       # 输出: This is a new method added by the decorator.

在这里插入图片描述


http://www.mrgr.cn/news/62185.html

相关文章:

  • python的lambda实用技巧
  • eclipse下载与安装(汉化教程)超详细
  • 【libGL error】Autodl云服务器配置ACT的conda虚拟环境生成训练数据时,遇到了libGL相关错误,涉及swrast_dri.so
  • 沪深A股上市公司数据报告分析
  • Nginx 配置基于IP 地址的 Web 服务器
  • ubuntu openmpi安装(超简单)
  • 深度学习之激活函数
  • 避免关键任务延迟的资源分配方法
  • Golang高级语法-工具链
  • 拓展学习-golang的基础语法和常用开发工具
  • 博科交换机SNMP采集(光衰)信息
  • 【FinalShell问题】FinalShell连接虚拟机超时问题
  • 「Mac畅玩鸿蒙与硬件14」鸿蒙UI组件篇4 - Toggle 和 Checkbox 组件
  • RegCM模式运行./bin/regcmMPI报错
  • 函数声明不是原型error: function declaration isn’t a prototype
  • 爆肝整理14天AI工具宝藏合集(三)
  • Node.js:模块 包
  • 前端文件上传组件流程的封装
  • React 组件生命周期与 Hooks 简明指南
  • python pytest-mock插件
  • Redis 事务 总结
  • 设计模式——外观模式
  • isp框架代码理解
  • Vue3数据统计小组件
  • leetcode-189-轮转数组
  • list ------ 是一个带头双向循环的列表