Python中的鸭子类型是什么?2025年3月17日 | 阅读 3 分钟 在本教程中,我们将学习鸭子类型。它是Python中一个流行的术语,源自这样的说法:“如果它像鸭子一样走路,像鸭子一样游泳,像鸭子一样看起来,那么它可能应该是一只鸭子。” 上述陈述给了我们一个识别鸭子的方法。这里我们不需要知道鸭子的基因序列。我们通过它的行为和外表来得出结论。 我们将讨论Python编程中鸭子类型的确切含义。 Python遵循EAFP(更容易请求原谅而不是请求许可)原则,而不是LBLY(三思而后行)原则。EAFP在某种程度上与“鸭子类型”风格相关。 动态类型 vs. 静态类型使用鸭子类型的主要原因是支持Python编程中的动态类型。在Python中,我们不需要指定变量的数据类型,并且可以在后续代码中为同一个变量重新赋值不同的数据类型。让我们看下面的例子。 示例 - 输出 <class 'int'> <class 'str'> <class 'list'> 正如我们在上面的代码中看到的,我们将一个整数赋给了变量x,使其成为int类型。然后,我们将一个字符串和一个列表赋给了同一个变量。Python解释器接受了同一个变量的数据类型更改。这是动态类型行为。 许多其他编程语言,如Java、Swift是静态类型的。我们需要声明带有数据类型的变量。在下面的示例中,我们尝试使用Swift而不是Python来执行相同的操作。 示例 - 上面的代码无法编译,因为我们无法在Swift语言中赋值一个字符串。因为变量a被声明为整数。 鸭子类型概念前面我们已经讨论过Python是一种动态类型的语言。但是,我们可以对自定义数据类型使用动态方法。让我们来理解下面的例子。 示例 - 输出 Compiling Running Spell Check Convention Check 在上面的代码中,我们创建了一个具有execute()方法的VisualStudio类。在desktop-class中,我们在code()中将ide作为参数传递。ide是VisualStudio类的对象。借助ide,我们调用了VisualStudio类的execute()方法。 让我们看另一个例子。 示例 - 2 输出 I'm a duck, and I can swim. I'm a sparrow, and I can swim. Traceback (most recent call last): File "<string>", line 24, in <module> File "<string>", line 19, in duck_testing AttributeError: 'Crocodile' object has no attribute 'swim' 在上面的代码中,通过调用duck_testing函数来反映Duck类的实例。当使用实现swim()函数的Sparrow类时,也会发生这种情况。但在Crocodile类的情况下,它未能通过鸭子测试评估,因为它没有实现swim()函数。 鸭子类型如何支持EAFP鸭子类型是EAFP最合适的方式,因为我们不需要关注对象的“类型”。我们只需要关心它的行为和能力。让我们看下面的陈述。 当我们看到很多if-else块时,那就是LBYL编码风格。 但是如果我们看到很多try-except块,那么很可能这是一个EAFP编码者。 下一主题Python中的PEP 8 |
GitHub, Inc 提供了一个在线托管服务,用于使用 Git 进行应用程序开发和变更控制。它提供了每个软件功能请求、项目访问控制、持续集成、任务管理、错误跟踪以及 Git 的分布式版本控制。它是一家总部位于...的微软公司。
7 分钟阅读
Selenium 是一个强大的自动化工具,广泛用于网络应用程序测试和网络抓取。虽然 Selenium 提供了与 Web 元素交互和导航网页的各种策略,但有时您需要更高级的功能来执行特定任务。其中一项此类高级功能是...
阅读 4 分钟
在本教程中,我们将学习 Python 中的反射机制。我们还将讨论如何实现反射以及它对编程的有效性。让我们简要介绍一下反射。介绍 反射是一种允许检查属性的机制...
阅读 4 分钟
在创建和向客户交付商品过程中涉及的制造和分销网络被称为供应链。而供应链分析则研究供应链的许多元素,以学习提高其效率并为消费者增加更多价值的方法。这篇文章是为...
阅读 22 分钟
简介 通常,我们使用的数据不一定以 CSV 或 JSON 格式提供。数据可以以表格的形式存储在 PDF 文件中。最简单的情况是,我们可以将表格复制并粘贴到...
阅读 15 分钟
在 Python 中,浮点值的范围取决于实现和平台。Python 语言规范仅要求浮点数至少支持 1e-308 到 1e+308,精度至少为 53 位。实际上,大多数现代 Python 实现都使用 IEEE 754...
阅读 4 分钟
? 在本文中,我们将讨论如何交换字符串中的两个字符。有多种方法可以帮助理解我们如何交换字符串中的两个字符。方法一:使用 list() 和 join() 方法 如果我们想交换字符串中的两个字符...
阅读 3 分钟
亚马逊 Alexa 是亚马逊开发的虚拟助手。它可以进行语音交互、播放音乐、创建待办事项列表、设置闹钟、播放播客、播放有声读物,并提供实时天气、新闻和交通信息。Alexa 还能够控制各种智能设备,包括灯光、开关、恒温器和...
18 分钟阅读
什么是 SMOTE?合成少数过采样 (SMOTE) 过程增加了用于人工智能的信息数据集中较少引入的案例数量。这是一种通过复制现有案例来增加案例数量的更好方法。当我们需要处理...
5 分钟阅读
在本教程中,我们将学习如何为给定值编写。在开始编写程序之前,让我们首先了解复利的基础知识。复利是指将利息添加到存款或贷款的给定本金值中...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India