Python 中什么是鸭子类型?[亲测有效]

Python 中什么是鸭子类型?[亲测有效]在本教程中,我们将学习鸭子类型。这是 Python 中的一个流行术语,来源于这样一句话:“如果它走路像鸭子,游泳像鸭子,看起来像鸭子,那么它很可能应该是一只鸭子。”

在本教程中,我们将学习鸭子类型。这是 Python 中的一个流行术语,来源于这样一句话:“如果它走路像鸭子,游泳像鸭子,看起来像鸭子,那么它很可能应该是一只鸭子。”

上面的陈述给出了一个识别鸭子的想法。这里我们不需要有鸭子的基因组序列。我们通过它的行为和外观得出结论。

我们将讨论 Python 编程中鸭子类型的确切含义。

Python 遵循的是 EAFP (请求原谅比请求允许更容易)而不是 LBLY (三思而后行)的哲学。EAFP 与“鸭子类型”风格有些联系。

动态与静态类型

使用鸭式打字的主要原因是为了在 Python 编程中提供动态打字的支持。在 Python 中,我们不需要指定变量的数据类型,我们可以在进一步的代码中将不同的数据类型值重新分配给同一个变量。让我们看看下面的例子。

示例-


x = 12000
print(type(x))

x = 'Dynamic Typing'
print(type(x))

x = [1, 2, 3, 4]
print(type(x))

输出:

<class 'int'>
<class 'str'>
<class 'list'>

正如我们在上面的代码中看到的,我们给变量 x 分配了一个整数,使其成为 int 类型。然后,我们给同一个变量分配了一个字符串和一个列表。Python 解释器接受同一变量数据类型的变化。这是一种动态打字行为。

许多其他编程语言,如 Java、swift 都是静态类型。我们需要用数据类型声明变量。在下面的例子中,我们试图用 Swift 代替 Python 做同样的事情。

示例-


# integer value assigning in JavaScript
var a = 10

# Assinging string in swift
a = 'Swift language'

上面的代码无法编译,因为我们无法用 Swift 语言分配字符串。因为变量 a 被声明为整数。

鸭分型的概念

前面我们已经讨论过 Python 是一种动态类型语言。但是,我们可以将动态方法用于自定义数据类型。让我们理解下面的例子。

示例-


class VisualStudio:
     def execute(self):
         print('Compiling')
         print('Running')
         print('Spell Check')
         print('Convention Check')

class Desktop:
    def code(self, ide):
        ide.execute()

ide  = VisualStudio()      
desk = Desktop()
desk.code(ide)

输出:

Compiling
Running
Spell Check
Convention Check

在上面的代码中,我们已经创建了一个 VisualStudio 类,该类必须执行()方法。在桌面类中,我们在代码()中将 ide 作为参数传递。一个 ide 是 VisualStudio 类的一个对象。在 ide 的帮助下,我们调用了 VisualStudio 类的 execute() 方法。

让我们看另一个例子。

示例- 2


class Duck:
   def swim(self):
         print("I'm a duck, and I can swim.")

class Sparrow:
     def swim(self):
         print("I'm a sparrow, and I can swim.")

class Crocodile:
     def swim_walk(self):
         print("I'm a Crocodile, and I can swim, but not quack.")

def duck_testing(animal):
     animal.swim()

duck_testing(Duck())
duck_testing(Sparrow())
duck_testing(Crocodile())

输出:

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 类的实例通过调用 duck_testing 函数来反映。麻雀类也是如此,它实现了游()功能。但是在鳄鱼类的例子中,它没有通过鸭子测试评估,因为它没有实现游泳()功能。

鸭子类型如何支持 EAFP

鸭子类型是最适合 EAFP 的风格,因为我们不需要关注对象的“打字”。我们只需要照顾它的行为和功力。让我们看看下面的陈述。

当我们看到很多 if-else 块时,这就是 LBYL 编码风格。

但是如果我们看到大量的尝试——除了块,那么它很可能是一个 EAFP 编码器。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13994.html

(0)
上一篇 2023-08-24
下一篇 2023-08-24

相关推荐

  • day01-数据库的安装和使用「终于解决」

    day01-数据库的安装和使用「终于解决」Java数据库的安装和使用 1.数据库的作用 一个问题:淘宝网、京东、微信抖音,都有各自的功能,那么我们退出系统的时候,为什么信息还在? 解决之道-文件,数据库 为了解决上诉问题,使用更加利于管理数据

    2023-06-08
    140
  • Python字典元素添加方法掌握

    Python字典元素添加方法掌握Python是一门易于学习和阅读的编程语言,整个语言的学习曲线很平缓,这得益于Python的可读性和干净简洁的语法。字典是Python的一种内置类型,在Python中,字典是一种可变的容器,用于存储键值对(key-value pairs)。它类似于其他语言中的哈希表或关联数组,在Python中使用花括号({})表示,键和值用冒号(:)隔开。

    2024-06-19
    43
  • Python代码行数统计

    Python代码行数统计作为一名Python工程师,我们经常需要对自己的代码进行统计和分析,以提高开发和维护效率。而其中一个重要的统计指标就是代码行数。本文将从多个方面对统计Python代码行数做详细的阐述。

    2024-05-05
    59
  • vlan划分和access端口,trunk端口,hybrid端口的配置[亲测有效]

    vlan划分和access端口,trunk端口,hybrid端口的配置[亲测有效]#一.华为交换机上的端口类型access接口,用于连接终端设备,access接口只允许一个vlan的流量通过。trunk接口,用于连接不通交换设备,trunk接口可以允许多个vlan的流量通过。hy…

    2023-03-30
    136
  • 以查看建表语句为中心的Python工程师

    以查看建表语句为中心的Python工程师随着互联网的快速发展,数据处理和存储变得越来越重要。在这种情况下,数据库成为了重要的组成部分。在开发过程中,经常需要查看数据库的建表语句,以便更好地理解和处理数据。Python作为一种流行的编程语言,可以帮助Python工程师更轻松地查看建表语句,为开发工作提供帮助。

    2024-09-04
    7
  • Postgresql更新geometry类型字段「终于解决」

    Postgresql更新geometry类型字段「终于解决」执行如下语句即可: UPDATE hngsmmzt.hngs_gsmm_pt set geom=public.ST_SetSRID(public.ST_MakePoint(jd,wd),4490) …

    2023-01-30
    193
  • Python判断文件是否存在

    Python判断文件是否存在文件是计算机中存储数据的重要载体。在Python中判断文件是否存在,是我们处理文件和数据的基础。本篇文章将介绍Python判断文件是否存在的方法,并从多个方面详细阐述。

    2024-06-22
    36
  • 用Python自动化实现邮件群发功能

    用Python自动化实现邮件群发功能邮件群发功能指的是发送一封邮件给多个收件人的功能,如果需要发送相同内容的邮件给多人,手动一个一个输入收件人信息显然是不现实的。因此,通过编写Python脚本实现自动化邮件群发功能是非常有用的。

    2024-03-15
    72

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注