在上一篇文章中,我们讲解了函数最基础常见的用法,今天我想在这里简单地谈一下函数的其他用法。尽管这些用法可能不是非常常见,但我认为它们仍然值得介绍。因此,我将单独为它们开设一个章节,并探讨匿名函数和装饰器函数这两种特殊的用法。

匿名函数

在Python中,匿名函数也被称为lambda函数,它是一种没有名称的函数。但是与Java的lambda表达式相比,它们有一些区别。匿名函数通常用于在代码中定义简单的功能,并且可以在不需要额外定义函数的情况下使用。主要就是省事~~

匿名函数的语法如下:

lambda arguments: expression

其中,arguments是函数的参数,expression是函数的返回值。如果在expression中没有使用print这样的打印函数,通常情况下函数会返回expression的值,这意味着函数中包含了return语句。

# 写法一
print((lambda x, y: x + y)(2, 3)) # 写法二,但是这个赋值了一个函数名字,没啥意义了就
add = lambda x, y: x + y
print(add(2, 3))

在Java中,并没有直接对应的匿名函数的概念,但可以通过定义接口或使用Lambda表达式来实现类似的功能。

装饰器函数

在Python中,装饰器是一种特殊的函数,它可以接受一个函数作为参数,并返回一个新的函数。装饰器函数通常用于在不改变原函数代码的情况下,对函数进行扩展或修改。而在Java中,装饰器函数的概念可以通过使用注解来实现。通过在方法前添加特定的注解,可以实现对方法的装饰。

简单来说,装饰器是一种用于修改其他函数行为的函数。它们允许在不修改原始函数定义的情况下,对其进行扩展、修改或包装。

装饰器函数的语法如下:

def log_decorator(original_function):
def wrapper_function(*args, **kwargs):
print(f"Calling {original_function.__name__} function")
result = original_function(*args, **kwargs)
print(f"{original_function.__name__} function finished")
return result
return wrapper_function @log_decorator
def add(x, y):
return x + y print(add(2, 3))
#输出结果如下
#Calling add function
#add function finished
#5

这里我们定义了一个装饰器函数log_decorator,它在调用原始函数之前和之后打印了一些信息。通过在add函数上使用@log_decorator,我们将add函数传递给log_decorator函数进行装饰。当调用add函数时,实际上是调用了被装饰后的wrapper_function函数。

总结

在这篇文章中,我们介绍了函数的两种不常用的特殊用法:匿名函数和装饰器函数。匿名函数是一种没有名称的函数,通常用于定义简单的功能。我们可以使用lambda关键字来创建匿名函数,并在需要时直接调用它们。装饰器函数是一种特殊的函数,可以接受一个函数作为参数,并返回一个新的函数。装饰器函数通常用于在不改变原函数代码的情况下,对函数进行扩展或修改。通过使用装饰器,我们可以在函数调用前后执行额外的操作。这些特殊用法可以帮助我们更灵活地使用函数,并使代码更加简洁和可读。

🔥🔥Java开发者的Python快速进修指南:函数进阶的更多相关文章

  1. JAVA开发者的Golang快速指南

    Golang作为Docker.Kubernetes和OpenShift等一些酷辣新技术的首选编程语言,越来越受欢迎.尤其它们都是开源的,很多情况下,开源是非常有价值的.深入学习阅Golang等源代码库 ...

  2. 针对Quant的Python快速入门指南

    作者:用Python的交易员 (原创文章,转载请注明出处) 最近有越来越多的朋友在知乎或者QQ上问我如何学习入门Python,就目前需求来看,我需要写这么一篇指南. 针对整个vn.py框架的学习,整体 ...

  3. MessagePack Java 0.6.X 快速开始指南 - 安装

    0.6.x 版本的 MessagePack 已经过期被淘汰了.如果你现在开始使用 MessagePack 话,请不要使用这个版本. 我们再这里保留 0.6.x 版本的内容主要用于参考用途. 最新的 M ...

  4. python学习日记(函数进阶)

    命名空间 内置命名空间 存放了python解释器为我们提供的名字:print,input...等等,他们都是我们熟悉的,拿过来就可以用的方法. 内置的名字在启动解释器(程序运行前)的时候被加载在内存里 ...

  5. python 基础篇 11 函数进阶----装饰器

    11. 前⽅⾼能-装饰器初识本节主要内容:1. 函数名的运⽤, 第⼀类对象2. 闭包3. 装饰器初识 一:函数名的运用: 函数名是一个变量,但他是一个特殊变量,加上括号可以执行函数. ⼆. 闭包什么是 ...

  6. python 基础篇 10 函数进阶

    本节主要内容:1. 函数参数--动态传参2. 名称空间, 局部名称空间, 全局名称空间, 作⽤域, 加载顺序.3. 函数的嵌套4. gloabal, nonlocal关键字 ⼀. 函数参数--动态传参 ...

  7. Python初学者第二十二天 函数进阶(1)

    22day 1.函数命名空间: 2.函数作用域的查找顺序:LEGB locals->enclosing function ->globals ->_builtins_ a.local ...

  8. python基础学习之函数进阶【匿名函数、作用域关系、闭包、递归】

    匿名函数 lambda的用法: lambda x:x+1 解释,同等于以下函数 def test(x): return x+1 因为没有函数名,所以称为匿名函数 只适用于简易的逻辑,复杂逻辑无法实现 ...

  9. Python之路----生成器函数进阶

    def generator(): print(123) yield 1 print(456) yield 2 g = generator() ret = g.__next__() print('*** ...

  10. 阿里巴巴泰山版《Java 开发者手册》,也是一份防坑指南

    我是风筝,公众号「古时的风筝」,一个不只有技术的技术公众号,一个在程序圈混迹多年,主业 Java,另外 Python.React 也玩儿的 6 的斜杠开发者. Spring Cloud 系列文章已经完 ...

随机推荐

  1. 记一次线上问题 → Deadlock 的分析与优化

    开心一刻 今天女朋友很生气 女朋友:我发现你们男的,都挺单纯的 我:这话怎么说 女朋友:脑袋里就只想三件事,搞钱,跟谁喝点,还有这娘们真好看 我:你错了,其实我们男人吧,每天只合计一件事 女朋友:啥事 ...

  2. [nginx]proxy_cache缓存系统

    前言 proxy_cache是nginx内置的一个缓存系统,可实现减小后端负载的作用. 常用参数说明 参数 说明 proxy_cache_path 缓存文件路径.level表示目录层级,1:2表示两个 ...

  3. SpringBoot3集成Redis

    目录 一.简介 二.工程搭建 1.工程结构 2.依赖管理 3.Redis配置 三.Redis用法 1.环境搭建 2.数据类型 3.加锁机制 四.Mybatis缓存 1.基础配置 2.自定义实现 五.参 ...

  4. 在原生APP中集成Unity容器

    随着技术的发展,越来越多的APP期望拥有3D,AR的能力.要达到这个目标可以选择使用原生开发,也可以使用Unity成熟的3D开发技术链,通过嵌入的方式将Unity容器嵌入到APP中.这里介绍的是通过嵌 ...

  5. Python API接口对接详解与实践

    ​ 在数字化时代,数据交互已经成为各种应用的必备功能.API(应用程序编程接口)就是实现不同应用程序之间数据交互的一种方式.Python作为一种功能强大的编程语言,也提供了许多用于对接API的库和框架 ...

  6. QA|linux指令awk '{print $(NF-1)}'为啥用单引号而不是双引号?|linux

    linux指令awk '{print $(NF-1)}'为啥用单引号而不是双引号? 我的理解: 因为单引号不对会内容进行转义,而双引号会,举个栗子 1 a=1 2 echo "$a" ...

  7. shell、python时间函数小结

    有时需要写一些定时任务脚本,简单总结一下,备忘. 1. 获取当前时间 python 在windows下精确到0.001秒,linux下时间精度为0.000001秒 >>> impor ...

  8. ViTPose+:迈向通用身体姿态估计的视觉Transformer基础模型

    身体姿态估计旨在识别出给定图像中人或者动物实例身体的关键点,除了典型的身体骨骼关键点,还可以包括手.脚.脸部等关键点,是计算机视觉领域的基本任务之一.目前,视觉transformer已经在识别.检测. ...

  9. 文心一言 VS 讯飞星火 VS chatgpt (91)-- 算法导论8.3 4题

    四.用go语言,说明如何在 O(n) 时间内,对 0 到 $n^3-1$ 区间内的n个整数进行排序. 文心一言: 在 O(n) 时间内对 0 到 n^3-1 区间内的 n 个整数进行排序,可以使用基数 ...

  10. 618京东到家APP-门详页反爬实战

    一.背景与系统安全需求分析 1. 系统的重要性 上图所示是接口所属位置.对电商平台或在线商店而言,分类查商品都是很重要的,通过为用户提供清晰的商品分类,帮助他们快速找到所需产品,节省浏览时间,提升购物 ...