python魔术方法的学习

判断是否为可迭代对象

from collections.abc import Iterableobj = [1, 2, 3]  # 替换为你要判断的对象
if isinstance(obj, Iterable):print("这是一个可迭代对象")
else:print("这不是一个可迭代对象")

_next_

是 Python 中迭代器对象的一个方法,用于获取下一个元素。
当使用迭代器进行迭代时,通过调用 __next__ 方法可以依次获取迭代器中的元素,
直到没有更多元素可获取时,会引发 StopIteration 异常。

产生生成器的方法:

  1. 使用函数和 yield 关键字**:在函数中使用 yield 语句来定义生成器。
  def func()...yield
  1. 列表推导式**:可以通过在列表推导式中使用 yield 来创建生成器。
    gen = (i for i in range(5))
    generator就是生成器
    1. next():获取生成器中的下一个元素。
    2. send(value) :向生成器发送一个值,并继续执行生成器函数到下一个 yield 语句。
    3. throw(type, value=None, traceback=None):在生成器内部抛出异常。
    4. close():关闭生成器,后续再调用 __next__() 会引发 StopIteration 异常。
    5. 协程:
      执行过程中暂停和恢复,允许在一个函数内部实现多个任务的协作执行。协程通过yield关键字或特定的协程库来实现。

Python 的可迭代对象:

  1. 列表(List)
  2. 元组(Tuple)
  3. 字符串(String)
  4. 字典(Dictionary)
  5. 集合(Set)
  6. 文件对象(File Objects)
  7. 迭代器与迭代器:
    1. 可迭代的对象并不一定就是迭代器。
    2. 可迭代对象是能够通过迭代操作依次获取元素的对象,
    3. 而迭代器是实现了迭代器协议的对象,它不仅可以被迭代,
    4. 还能记住当前的迭代位置,并在每次迭代时返回下一个元素。
      迭代器与生成器:
      迭代器:是一个对象,它实现了迭代器协议,能够逐个返回元素。
      生成器:是一种特殊的迭代器,它通过使用yield关键字来定义,可以在执行过程中暂停和恢复,按需生成元素。
      生成器是创建迭代器的一种简洁方式,

魔术方法:

  1. 魔术方法(Magic Methods)是 Python 中一些具有特殊名称和功能的方法。
    它们通常以双下划线开头和结尾,如__init____str____len__等。
    1. __init__:类的构造方法,用于初始化对象。
    2. 触发条件
      _str_方法的触发条件主要有以下几种: 使用str()`函数将对象转换为字符串时**。 打印对象时
    3. 注意点
      在自定义__str__方法时需要注意以下几点:
      1. 返回值应为字符串类型:确保返回的是一个能够清晰表示对象的字符串。
      2. 简洁明了:尽量使返回的字符串简洁易懂,能够准确反映对象的关键信息。
      3. 一致性:保持返回的字符串与对象的实际状态一致,避免产生误导。
  2. __str__:定义对象的字符串表示形式。
        class MyClass:def __init__(self, name):self.name = namedef __str__(self):return f"MyClass object with name: {self.name}"obj = MyClass("example")print(obj)
  1. __len__:定义对象的长度。
    class MyList:def __init__(self, items):self.items = itemsdef __len__(self):return len(self.items)my_list = MyList([1, 2, 3])print(len(my_list))
  1. __del__:对象被销毁时调用。
    __del__方法的触发条件通常有以下几种情况:
    1. 程序结束时**:当程序正常结束运行时,会触发对象的__del__方法。
    2. 对象的所有引用都被删除时**:当对象不再有任何其他变量引用它时,会触发__del__方法。
  2. __eq____ne__lt__le____gt____ge__:用于比较对象。
  3. sys.getrefcount()
    获取对象的引用计数
  4. __init__方法是 Python 中的一个特殊方法,也称为构造方法。
    它在创建对象时被自动调用,用于对新创建的对象进行初始化操作。
    可以在__init__方法中为对象的属性赋值,执行其他必要的初始化任务。
    通过传递参数给__init__方法,为对象的name属性赋值
     class MyClass:def __init__(self, name):self.name = name

创建对象并进行初始化

obj = MyClass("示例对象")
__del__
__del__方法在对象即将被销毁时被调用。
需要注意的是,__del__方法的执行时间并不确定,
它可能不会及时被触发,尤其是在程序正常结束时。
并且,不建议在__del__方法中执行一些关键的操作或资源释放,因为它的执行可能不可靠。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/60803.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web——upload-labs——第四关——.htaccess文件绕过

先尝试直接上传一个普通的一句话木马 显示此文件不允许上传,这道题并没有提示不允许上传什么后缀的文件,经过尝试,基本上所有后缀能够被解析为php语句执行的文件都不能成功上传。试试正常的图片能不能上传: 我们再来试试图片马能不…

Gitcode文件历史记录查看和还原

文件历史记录 文件历史记录用于记录代码文件的更改历史,它允许用户查看文件的不同版本,了解每个版本的修改内容、作者和提交消息。这对于跟踪文件演进、恢复错误更改、审查代码以及了解项目进展都非常有用。 文件历史记录功能提供了以下核心功能&#…

前端神经网络入门(二):如何利用 WebGPU 进行数值计算,实现大规模数据的计算加速?- 边读边按下F12跑代码吧

在 Web 应用开发中,JavaScript 是前端开发者们最常用的语言。然而,当面对大规模数据处理和计算任务时,JavaScript 在浏览器中的执行往往会受到诸多性能瓶颈的限制。幸运的是,WebGPU 的出现,为我们提供了在前端实现高性…

新手教学系列——善用 VSCode 工作区,让开发更高效

引言 作为一名开发者,你是否曾经在项目中频繁地切换不同文件夹,打开无数个 VSCode 窗口?特别是当你同时参与多个项目或者处理多个模块时,这种情况更是家常便饭。很快,你的任务栏上挤满了 VSCode 的小图标,切换起来手忙脚乱,工作效率直线下降。这时候,你可能会问:“有…

Oracle故障处理:ora-12514 与 ora-28547

目录 项目场景 问题分析 问题总结 项目场景 现场同事求助说:有个刚刚部署在Windows上的Oracle11gR2数据库(单机单实例),使用PLSQL工具连接不上。帮忙查看后,发现未装Oracle client,指导其安装完Oracle客…

【miniMax开放平台-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被机器执行自动化程序攻击,存在如下风险: 暴力破解密码,造成用户信息泄露,不符合国家等级保护的要求。短信盗刷带来的拒绝服务风险 ,造成用户无法登陆、注册,大量收到垃圾短信的…

26-ES集群搭建、身份认证配置

虚机搭建 添加es用户 elasticsearch 默认不允许root用户启动,所以需要创建es用户 useradd elasticsearch passwd elasticsearch 解压安装包 #解压es tar -xvzf elasticsearch-7.14.2-linux-x86_64.tar.gz 将文件夹赋予es用户权限 #将文件夹赋予es用户权限 sud…

OpenHarmony的公共事件

OpenHarmony的公共事件 公共事件简介 CES(Common Event Service,公共事件服务)为应用程序提供订阅、发布、退订公共事件的能力。 公共事件分类 公共事件从系统角度可分为:系统公共事件和自定义公共事件。 系统公共事件&#…

【AlphaFold3】开源本地的安装及使用

文章目录 安装安装DockerInstalling Docker on Host启用Rootless Docker 安装 GPU 支持安装 NVIDIA 驱动程序安装 NVIDIA 对 Docker 的支持 获取 AlphaFold 3 源代码获取基因数据库获取模型参数构建将运行 AlphaFold 3 的 Docker 容器 参考 AlphaFold3: https://github.com/goo…

npm list -g --depth=0(用来列出全局安装的所有 npm 软件包而不显示它们的依赖项)

您提供的命令 npm list -g --depth0 是在 Node Package Manager (npm) 的上下文中使用的,用来列出全局安装的所有 npm 软件包而不显示它们的依赖项。 这是它的运作方式: npm list -g --depth0-g: 指定列表应包括全局安装的软件包。--depth0: 限制树形结…

Spring Boot框架:电商系统的技术革新

4 系统设计 网上商城系统的设计方案比如功能框架的设计,比如数据库的设计的好坏也就决定了该系统在开发层面是否高效,以及在系统维护层面是否容易维护和升级,因为在系统实现阶段是需要考虑用户的所有需求,要是在设计阶段没有经过全…

【数据分享】中国对外投资合作发展报告(2013-2023)

数据介绍 绪 论............................................................................................................................. 1 对外投资合作高质量发展迈出新步伐................................................................... 2 第一篇 发…

【深度学习】LSTM、BiLSTM详解

文章目录 1. LSTM简介:2. LSTM结构图:3. 单层LSTM详解4. 双层LSTM详解5. BiLSTM6. Pytorch实现LSTM示例7. nn.LSTM参数详解 1. LSTM简介: LSTM是一种循环神经网络,它可以处理和预测时间序列中间隔和延迟相对较长的重要事件。LSTM通…

【云原生系列--Longhorn的部署】

Longhorn部署手册 1.部署longhorn longhorn架构图: 1.1部署环境要求 kubernetes版本要大于v1.21 每个节点都必须装open-iscsi ,Longhorn依赖于 iscsiadm主机为 Kubernetes 提供持久卷。 apt-get install -y open-iscsiRWX 支持要求每个节点都安装 N…

【Hadoop】【hdfs】【大数据技术基础】实验三 HDFS 基础编程实验

实验三: HDFS Java API编程实践 实验题目 HDFS Java API编程实践 实验目的 熟悉HDFS操作常用的Java API。 实验平台 操作系统:Linux Hadoop版本:2.6.0或以上版本 JDK版本:1.6或以上版本 Java IDE:Eclipse 实验…

ssm114基于SSM框架的网上拍卖系统的设计与实现+vue(论文+源码)_kaic

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势,商品拍卖当然也不能排除在外,随着商品拍卖管理的不断成熟,它彻底改变了过去传统的经营管理方式,不仅使商品…

Transformer中的算子:其中Q,K,V就是算子

目录 Transformer中的算子 其中Q,K,V就是算子 一、数学中的算子 二、计算机科学中的算子 三、深度学习中的算子 四、称呼的由来 Transformer中的算子 其中Q,K,V就是算子 “算子”这一称呼源于其在数学、计算机科学以及深度学习等多个领域中的广泛应用和特定功能。以下是…

厦大南洋理工最新开源,一种面向户外场景的特征-几何一致性无监督点云配准方法

导读 本文提出了INTEGER,一种面向户外点云数据的无监督配准方法,通过整合高层上下文和低层几何特征信息来生成更可靠的伪标签。该方法基于教师-学生框架,创新性地引入特征-几何一致性挖掘(FGCM)模块以提高伪标签的准确…

生产环境中AI调用的优化:AI网关高价值应用实践

随着越来越多的组织将生成式AI引入生产环境,他们面临的挑战已经超出了初步实施的范畴。如果管理不当,扩展性限制、安全漏洞和性能瓶颈可能会阻碍AI应用的推广。实际问题如用户数据的安全性、固定容量限制、成本管理和延迟优化等,需要创新的解…

Redis 概 述 和 安 装

安 装 r e d i s: 1. 下 载 r e dis h t t p s : / / d o w n l o a d . r e d i s . i o / r e l e a s e s / 2. 将 redis 安装包拷贝到 /opt/ 目录 3. 解压 tar -zvxf redis-6.2.1.tar.gz 4. 安装gcc yum install gcc 5. 进入目录 cd redis-6.2.1 6. 编译 make …