合集 - Python面向对象编程(51)
1.可能是全网最适合入门的面向对象编程教程:Python实现-嵌入式爱好者必看!06-232.全网最适合入门的面向对象编程教程:00 面向对象设计方法导论06-243.全网最适合入门的面向对象编程教程:01 面向对象编程的基本概念06-254.全网最适合入门的面向对象编程教程:02 类和对象的Python实现-使用Python创建类06-275.全网最适合入门的面向对象编程教程:03 类和对象的Python实现-为自定义类添加属性06-286.全网最适合入门的面向对象编程教程:04 类和对象的 Python 实现-为自定义类添加方法(PySerial 库接收串口数据)06-297.全网最适合入门的面向对象编程教程:05 类和对象的Python实现-PyCharm代码标签(一个帮你提升coding效率的小技巧)06-308.全网最适合入门的面向对象编程教程:06 类和对象的Python实现-自定义类的数据封装07-019.全网最适合入门的面向对象编程教程:07 类和对象的Python实现-类型注解-提高代码可读性的利器07-0310.全网最适合入门的面向对象编程教程:08 类和对象的Python实现-@property装饰器:把方法包装成属性07-0411.全网最适合入门的面向对象编程教程:09 类和对象的Python实现-类之间的关系,你知道多少?07-0512.全网最适合入门的面向对象编程教程:10 类和对象的 Python 实现-类的继承和里氏替换原则,Python 模拟主机和传感器自定义类07-0713.全网最适合入门的面向对象编程教程:11 类和对象的Python实现-子类调用父类方法-模拟串口传感器和主机07-0914.全网最适合入门的面向对象编程教程:12 类和对象的Python实现-Python使用logging模块输出程序运行日志07-1015.全网最适合入门的面向对象编程教程:13 类和对象的Python实现-可视化阅读代码神器Sourcetrail的安装使用07-1116.全网最适合入门的面向对象编程教程:14 类和对象的 Python 实现-类的静态方法和类方法,你分得清吗?07-1117.全网最适合入门的面向对象编程教程:15 类和对象的 Python 实现-__slots__魔法方法07-1218.全网最适合入门的面向对象编程教程:16 类和对象的Python实现-多态、方法重写与开闭原则07-1319.全网最适合入门的面向对象编程教程:17 类和对象的Python实现-鸭子类型与“file-like object“07-1620.全网最适合入门的面向对象编程教程:18 类和对象的 Python 实现-多重继承与 PyQtGraph 串口数据绘制曲线图07-1721.全网最适合入门的面向对象编程教程:19 类和对象的 Python 实现-使用 PyCharm 自动生成文件注释和函数注释07-1822.全网最适合入门的面向对象编程教程:20 类和对象的 Python 实现-组合关系的实现与 CSV 文件保存07-1923.全网最适合入门的面向对象编程教程:21 类和对象的 Python 实现-多文件的组织:模块 module 和包 package07-1924.全网最适合入门的面向对象编程教程:22 异常捕获-异常和语法错误07-2325.全网最适合入门的面向对象编程教程:23 异常捕获-抛出异常07-2426.全网最适合入门的面向对象编程教程:24 异常捕获-异常的捕获与处理:try/except 语句、文件读写示例、Exception 引用07-2527.全网最适合入门的面向对象编程教程:25 异常捕获-Python判断输入数据类型07-2828.全网最适合入门的面向对象编程教程:26 异常捕获-上下文管理器和 with 语句07-2929.全网最适合入门的面向对象编程教程:27 异常捕获-Python中异常层级与自定义异常类的实现07-3030.全网最适合入门的面向对象编程教程:28 异常捕获-Python编程原则、哲学和规范大汇总07-3031.全网最适合入门的面向对象编程教程:29 异常捕获-断言与防御性编程和help函数的使用07-3132.全网最适合入门的面向对象编程教程:30 Python的内置数据类型-object根类08-0333.全网最适合入门的面向对象编程教程:31 Python的内置数据类型-对象Object和类型Type08-0434.全网最适合入门的面向对象编程教程:32 Python 的内置数据类型-类 Class 和实例 Instance08-0535.全网最适合入门的面向对象编程教程:33 Python 的内置数据类型-对象 Object 和类型 Type 的关系08-0836.全网最适合入门的面向对象编程教程:34 Python的内置数据类型-Python常用复合数据类型:元组和命名元组08-0937.全网最适合入门的面向对象编程教程:35 Python的内置数据类型-文档字符串和__doc__属性08-1138.全网最适合入门的面向对象编程教程:36 Python的内置数据类型-字典08-1439.全网最适合入门的面向对象编程教程:37 Python常用复合数据类型-列表和列表推导式08-2440.全网最适合入门的面向对象编程教程:38 Python常用复合数据类型-使用列表实现堆栈、队列和双端队列08-2541.全网最适合入门的面向对象编程教程:39 Python常用复合数据类型-集合08-2742.全网最适合入门的面向对象编程教程:40 Python常用复合数据类型-枚举和enum模块的使用08-2843.全网最适合入门的面向对象编程教程:41 Python 常用复合数据类型-队列(FIFO、LIFO、优先级队列、双端队列和环形队列)08-3044.全网最适合入门的面向对象编程教程:42 Python常用复合数据类型-collections容器数据类型09-0145.全网最适合入门的面向对象编程教程:43 Python 常用复合数据类型-扩展内置数据类型09-0246.全网最适合入门的面向对象编程教程:44 Python内置函数与魔法方法-重写内置类型的魔法方法09-0347.全网最适合入门的面向对象编程教程:45 Python 实现常见数据结构-链表、树、哈希表、图和堆09-0548.全网最适合入门的面向对象编程教程:46 Python函数方法与接口-函数与事件驱动框架09-0949.全网最适合入门的面向对象编程教程:47 Python函数方法与接口-回调函数Callback09-1250.全网最适合入门的面向对象编程教程:48 Python函数方法与接口-位置参数、默认参数、可变参数和关键字参数09-14
51.全网最适合入门的面向对象编程教程:49 Python函数方法与接口-函数与方法的区别和lamda匿名函数09-15
收起
全网最适合入门的面向对象编程教程:49 Python 函数方法与接口-函数与方法的区别和 lamda 匿名函数
摘要:
在 Python 中,函数和方法都是代码的基本单元,用于封装和执行特定的任务;它们之间有一些重要的区别,而 lambda 匿名函数则是 Python 提供的一种简洁定义小型函数的方法。
原文链接:
FreakStudio的博客
往期推荐:
学嵌入式的你,还不会面向对象??!
全网最适合入门的面向对象编程教程:00 面向对象设计方法导论
全网最适合入门的面向对象编程教程:01 面向对象编程的基本概念
全网最适合入门的面向对象编程教程:02 类和对象的 Python 实现-使用 Python 创建类
全网最适合入门的面向对象编程教程:03 类和对象的 Python 实现-为自定义类添加属性
全网最适合入门的面向对象编程教程:04 类和对象的Python实现-为自定义类添加方法
全网最适合入门的面向对象编程教程:05 类和对象的Python实现-PyCharm代码标签
全网最适合入门的面向对象编程教程:06 类和对象的Python实现-自定义类的数据封装
全网最适合入门的面向对象编程教程:07 类和对象的Python实现-类型注解
全网最适合入门的面向对象编程教程:08 类和对象的Python实现-@property装饰器
全网最适合入门的面向对象编程教程:09 类和对象的Python实现-类之间的关系
全网最适合入门的面向对象编程教程:10 类和对象的Python实现-类的继承和里氏替换原则
全网最适合入门的面向对象编程教程:11 类和对象的Python实现-子类调用父类方法
全网最适合入门的面向对象编程教程:12 类和对象的Python实现-Python使用logging模块输出程序运行日志
全网最适合入门的面向对象编程教程:13 类和对象的Python实现-可视化阅读代码神器Sourcetrail的安装使用
全网最适合入门的面向对象编程教程:全网最适合入门的面向对象编程教程:14 类和对象的Python实现-类的静态方法和类方法
全网最适合入门的面向对象编程教程:15 类和对象的 Python 实现-__slots__魔法方法
全网最适合入门的面向对象编程教程:16 类和对象的Python实现-多态、方法重写与开闭原则
全网最适合入门的面向对象编程教程:17 类和对象的Python实现-鸭子类型与“file-like object“
全网最适合入门的面向对象编程教程:18 类和对象的Python实现-多重继承与PyQtGraph串口数据绘制曲线图
全网最适合入门的面向对象编程教程:19 类和对象的 Python 实现-使用 PyCharm 自动生成文件注释和函数注释
全网最适合入门的面向对象编程教程:20 类和对象的Python实现-组合关系的实现与CSV文件保存
全网最适合入门的面向对象编程教程:21 类和对象的Python实现-多文件的组织:模块module和包package
全网最适合入门的面向对象编程教程:22 类和对象的Python实现-异常和语法错误
全网最适合入门的面向对象编程教程:23 类和对象的Python实现-抛出异常
全网最适合入门的面向对象编程教程:24 类和对象的Python实现-异常的捕获与处理
全网最适合入门的面向对象编程教程:25 类和对象的Python实现-Python判断输入数据类型
全网最适合入门的面向对象编程教程:26 类和对象的Python实现-上下文管理器和with语句
全网最适合入门的面向对象编程教程:27 类和对象的Python实现-Python中异常层级与自定义异常类的实现
全网最适合入门的面向对象编程教程:28 类和对象的Python实现-Python编程原则、哲学和规范大汇总
全网最适合入门的面向对象编程教程:29 类和对象的Python实现-断言与防御性编程和help函数的使用
全网最适合入门的面向对象编程教程:30 Python的内置数据类型-object根类
全网最适合入门的面向对象编程教程:31 Python的内置数据类型-对象Object和类型Type
全网最适合入门的面向对象编程教程:32 Python的内置数据类型-类Class和实例Instance
全网最适合入门的面向对象编程教程:33 Python的内置数据类型-对象Object和类型Type的关系
全网最适合入门的面向对象编程教程:34 Python的内置数据类型-Python常用复合数据类型:元组和命名元组
全网最适合入门的面向对象编程教程:35 Python的内置数据类型-文档字符串和__doc__属性
全网最适合入门的面向对象编程教程:36 Python的内置数据类型-字典
全网最适合入门的面向对象编程教程:37 Python常用复合数据类型-列表和列表推导式
全网最适合入门的面向对象编程教程:38 Python常用复合数据类型-使用列表实现堆栈、队列和双端队列
全网最适合入门的面向对象编程教程:39 Python常用复合数据类型-集合
全网最适合入门的面向对象编程教程:40 Python常用复合数据类型-枚举和enum模块的使用
全网最适合入门的面向对象编程教程:41 Python常用复合数据类型-队列(FIFO、LIFO、优先级队列、双端队列和环形队列)
全网最适合入门的面向对象编程教程:42 Python常用复合数据类型-collections容器数据类型
全网最适合入门的面向对象编程教程:43 Python常用复合数据类型-扩展内置数据类型
全网最适合入门的面向对象编程教程:44 Python内置函数与魔法方法-重写内置类型的魔法方法
全网最适合入门的面向对象编程教程:45 Python实现常见数据结构-链表、树、哈希表、图和堆
全网最适合入门的面向对象编程教程:46 Python函数方法与接口-函数与事件驱动框架
全网最适合入门的面向对象编程教程:47 Python函数方法与接口-回调函数Callback
全网最适合入门的面向对象编程教程:48 Python函数方法与接口-位置参数、默认参数、可变参数和关键字参数
更多精彩内容可看:
给你的 Python 加加速:一文速通 Python 并行计算
一文搞懂 CM3 单片机调试原理
肝了半个月,嵌入式技术栈大汇总出炉
电子计算机类比赛的“武林秘籍”
一个MicroPython的开源项目集锦:awesome-micropython,包含各个方面的Micropython工具库
Avnet ZUBoard 1CG开发板—深度学习新选择
SenseCraft 部署模型到Grove Vision AI V2图像处理模块
文档和代码获取:
可访问如下链接进行对文档下载:
GitHub - leezisheng/Doc: 此文件夹主要包括嵌入式开发规范和相关技术书籍、资料分享。
本文档主要介绍如何使用 Python 进行面向对象编程,需要读者对 Python 语法和单片机开发具有基本了解。相比其他讲解 Python 面向对象编程的博客或书籍而言,本文档更加详细、侧重于嵌入式上位机应用,以上位机和下位机的常见串口数据收发、数据处理、动态图绘制等为应用实例,同时使用 Sourcetrail 代码软件对代码进行可视化阅读便于读者理解。
相关示例代码获取链接如下:GitHub - leezisheng/Python-OOP-Demo: 一文速通Python面向对象编程-文档示例程序
正文
函数和方法
函数是封装了一些独立的功能,可以直接调用,能将一些数据(参数)传递进去进行处理,然后返回一些数据(返回值),也可以没有返回值。可以直接在模块中进行定义使用。 所有传递给函数的数据都是显式传递的。
方法和函数类似,同样封装了独立的功能,但是方法是只能依靠类或者对象来调用的,表示针对性的操作。方法中的数据 self 和 cls 是隐式传递的,即方法的调用者,同时,方法可以操作类内部的数据。简单的说,函数在 python 中独立存在,可直接使用的,而方法是必须被别人调用才能实现的。
简单来说,与类和实例无绑定关系的 function 都属于函数;与类和实例有绑定关系的 function 都属于方法。
实际上,类的方法并不一定必须在类内实现,也可以在类内先声明而不具体实现,在类外部实现并给属性赋值(实现具体方法)。示例代码如下:
_# 定义Cat类_ | |
class Cat: | |
def say(self): | |
print("I' m a cat") | |
cat1 = Cat() | |
_# 定义lie方法_ | |
lie = lambda self: print("I' m a dog") | |
_# 添加lie方法_ | |
Cat.lie = lie | |
_# 查看Cat类属性_ | |
print(dir(Cat)) | |
cat1.lie() |
如下为运行结果,可以看到已经成功给 Cat 类添加了 lie 方法。
lamda 函数/匿名函数
lambda 函数是一种小型、匿名的、内联函数,它可以具有任意数量的参数,但只能有一个表达式。匿名函数不需要使用 def 关键字定义完整函数。lambda 函数通常用于编写简单的、单行的函数,通常在需要函数作为参数传递的情况下使用,例如在 map()、filter()、reduce()等函数中。
lambda 语法格式:
lambda arguments: expression |
lambda 表达式的参数:
- lambda 是 Python 的关键字,用于定义 lambda 函数
- arguments 是参数列表,可以包含零个或多个参数,但必须在冒号(:)前指定
- expression 是一个表达式,用于计算并返回函数的结果
以下实例使用 lambda 创建匿名函数,函数参数 a 与 b 相乘,并返回结果:
x = lambda a, b : a * b | |
print(x(5, 6)) |
lambda 函数也可以与内置函数如 map()、filter()和 reduce()一起使用,以便在集合上执行操作。
例如与 map()函数配合实现一个列表的平方运算,map()函数的原型是 map(function,iterable,……),它的结果是返回一个列表,这个函数的意义是将 function 应用于 iterable 的每一个元素,结果以列表的形式返回。
numbers = [1, 2, 3, 4, 5] | |
squared = list(map(lambda x: x**2, numbers)) | |
print(squared) |
或者与 filter 函数配合,对列表中元素进行筛选。filter()函数能够从可迭代对象(如字典、列表)中筛选某些元素,并生成一个新的迭代器。filter(function, iterable)函数会返回一个可迭代的 filter 对象,可以使用 list()函数将其转化为列表,这个列表包含过滤器对象中返回的所有的项。在下面的例子中,我们将列表中的偶数项筛选了出来:
numbers = [1, 2, 3, 4, 5, 6, 7, 8] | |
even_numbers = list(filter(lambda x: x % 2 == 0, numbers)) | |
print(even_numbers) |
或是与 reduce()函数进行运算,reduce()函数会对参数序列中元素进行累积。reduce(function, iterable[, initializer])将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
from functools import reduce | |
numbers = [1, 2, 3, 4, 5] | |
_# 使用 reduce() 和 lambda 函数计算乘积_ | |
product = reduce(lambda x, y: x * y, numbers) | |
print(product) |