流畅的python-学习笔记_设计模式+装饰器+闭包

策略模式

类继承abc.ABC即实现抽象类,方法可用abc.abstractmethod装饰,表明为抽象方法

装饰器基础

装饰器实际是语法糖,被装饰的函数实际是装饰器内部返回函数的引用

缺点:装饰器函数覆盖了被装饰函数的__name__和__doc__属性

装饰器执行时机

装饰器在装饰函数(定义被装饰函数)时就会执行

dis.dis可查看代码执行机器字节码

闭包

对象有属性可保存内容,函数可通过闭包实现对象的属性保存值。abc叫自由变量,是未绑定在本地空间的变量

nonlocal

闭包中如果对外面变量赋值一些操作,比如+=会报错referenced before assignment,因为赋值解释器会判断为局部变量,但变量还没赋值,就会报错,而不会用外面作用域已经定义好的同名变量。此时可用nonlocal声明变量,作用是声明变量为自由变量。

注意py2没有nonlocal,需要找折中方法

标准库的一些装饰器

functools.lru_cache

可缓存变量结果,比如斐波那契数列,较小的数字会递归执行很多次,lru_cache会缓存已执行的结果

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

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

相关文章

暗区突围pc版steam叫什么 暗区突围无限steam怎么搜

暗区突围pc版steam叫什么 暗区突围无限steam怎么搜 最近游戏圈热度最高的事件肯定是暗区突围PC版本的上线,在上线之前就惹得各位游戏爱好者们频频侧目,在正式上线之后更是吸引了大批的新玩家老玩家进行游戏。可是许多玩家发现在steam上找不到游戏&…

视频改字祝福/豪车装X系统源码/小程序uniapp前端源码

uniapp视频改字祝福小程序源码,全开源。创意无限!AI视频改字祝福,豪车装X系统源码开源,打造个性化祝福视频不再难! 想要为你的朋友或家人送上一份特别的祝福,让他们感受到你的真诚与关怀吗?现在…

【Python深度学习(第二版)(1)】什么是深度学习,深度学习与机器学习的区别、深度学习基本原理,深度学习的进展和未来

文章目录 一. 深度学习概念二. 深度学习与机器学习的区别三. 理解深度学习的工作原理1. 每层的转换进行权重参数化2. 怎么衡量神经网络的质量3. 怎么减小损失值 四. 深度学习已取得的进展五. 人工智能的未来 - 不要太过焦虑跟不上 一. 深度学习概念 先放一张图来理解下人工智能…

618必买好物清单来袭,这些数码产品值得你考虑!

是不是很多朋友和我一样,已经迫不及待地为618好物节做好了准备,准备开启一场购物盛宴!作为一名资深家居与数码爱好者,每年618好物节时我都会尽情挑选心仪的物品,因此今天我想和大家分享一下我的618购物清单&#xff0c…

智慧校园气象站有哪些优点

TH-XQ4智慧校园气象站具有多种优点,这些优点不仅提升了校园的气象监测能力,还为师生提供了更便捷、准确的气象服务。以下是智慧校园气象站的主要优点: 实时监测与预警:智慧校园气象站能够实时监测校园内的气象参数,如温…

计算机学报模板: \begin{multicols}{2}的情况下不显示\begin{table}

计算机学报模板 \vspace{1em} \hspace*{-0.8cm} \begin{minipage}{\columnwidth} \centering \captionsetup{labelformat=simple}

90% 的企业攻击始于钓鱼邮件

近日,安全人员研究表明,过去30天,62% 的恶意文件通过电子邮件进行传播,其中 PDF 是最常见的格式,占比 59%。 电子邮件是重要的通信方式之一。 根据 Statista 的数据,2022 年电子邮件用户数量超过了 42.6 …

Java--方法的使用

1.1什么是方法 方法顾名思义就是解决问题的办法,在程序员写代码的时候,会遇到很多逻辑结构一样,解决相同问题时,每次都写一样的代码,这会使代码看起来比较绒余,代码量也比较多,为了解决这个问题…

Rust:foo(x)、foo(x),还是foo(x.clone())?

一、一个实际问题 用一个线性代数库的求逆矩阵函数时,让我很不爽,我必须按照下面的形式写调用代码: ...if let Some(inv_mat) try_inverse(mat.clone()) {...}...注意 try_inverse 函数的参数传递形式,函数参数是 mat.clone() 而…

第十三章 计算机网络

这里写目录标题 1.网络设备2.协议簇2.1电子邮件(传输层)2.2地址解析(网际层)2.3DHCP(动态主动配置协议)2.4URL(统一资源定位器)2.5IP地址和子网掩码 1.网络设备 物理层:中继器,集线器(多路中继器) 数据链路层:网桥,交换机(多端口…

简要介绍MATLAB的背景和重要性,以及它在数据分析与可视化领域的广泛应用

**标题**:MATLAB在数据分析与可视化中的应用 **引言**(约200字) 简要介绍MATLAB的背景和重要性,以及它在数据分析与可视化领域的广泛应用。强调本文旨在探讨MATLAB在这两个领域的具体应用案例、技术特点和发展趋势。 **一、MAT…

软件系统概要设计说明书(实际项目案例整理模板套用)

系统概要设计说明书 1.整体架构 2.功能架构 3.技术架构 4.运行环境设计 5.设计目标 6.接口设计 7.性能设计 8.运行设计 9.出错设计 全文档获取进主页 软件资料清单列表部分文档(全套可获取): 工作安排任务书,可行性分析报告&…

ChatGPT4 Turbo 如何升级体验?官网如何使用最新版GPT-4 Turbo?

本文会教大家如何教大家升级自己的GPT4到GPT4 Turbo,同时检验自己的GPT4 Turbo是否是最新版本的GPT-4-Turbo-2024-04-09 说明 新版GPT-4 Turbo再次重夺大模型排行榜王座,超越了Claude 3 Opus。 最新版本的GPT-4 Turbo被命名为GPT-4-Turbo-2024-04-09。…

换新电脑,配置环境,下载需要的软件(还在整理中)

开发要的工具软件 nvm node版本管理工具(要在下载node之前配置好)参考 Visual Studio Code 写vue、html等 HBuilder X 写uniapp的 微信开发者工具 开发小程序微信h5的 Postman 测试接口的 Firefox 备用浏览器 uTools 小工具 Adobe Photoshop 切图仔必备 …

深度学习之基于Vgg16卷积神经网络书法字体风格识别

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 书法是中国传统文化的重要组成部分,具有深厚的历史底蕴和独特的艺术魅力。在数字化时代&…

Vue开发中Element UI/Plus使用指南:常见问题(如Missing required prop: “value“)及中文全局组件配置解决方案

文章目录 一、vue中使用el-table的typeindex有时不显示序号Table 表格显示索引自定义索引报错信息解决方案 二、vue中Missing required prop: “value” 报错报错原因解决方案 三、el-table的索引值index在翻页的时候可以连续显示方法一方法二 四、vue3中Element Plus全局组件配…

Windows系统进行等保测评步骤

Windows系统进行等保测评的操作流程涉及多个方面,包括身份鉴别、访问控制、安全审计、入侵防范、恶意代码防范等关键点。以下是根据提供的搜索结果,对Windows系统进行等保测评的一般步骤: 1. 身份鉴别45 确保每个登录用户都有唯一身份标识&…

root用户不能够sudo切换到普通用户解决办法

sudo命令可以让你以root身份执行命令,来完成一些我们这个账号完成不了的任务。但是并非所有用户都能够执行sudo,因为有权限的用户都在/etc/sudoers中。 解决方法如下: 1、进入root模式,su,再输入正确密码 &#…

Fastfetch一个类似neofetch的系统信息工具软件

1. 使用默认配置运行&#xff1a;fastfetch 2. 使用所有支持的模块运行&#xff0c;并找到您感兴趣的内容&#xff1a;fastfetch -c all.jsonc 3. 查找 fastfetch 检测到的所有数据&#xff1a;fastfetch -s <模块> --format json 4. 显示帮助信息&#xff1a;fastfetch …

相机2:曝光三要素之ISO(感光度)

曝光是相机的感光元件与光线接触成像的过程&#xff0c;而曝光三要素分别指的是光圈大小&#xff0c;快门速度和感光度。这三个因素都可以控制曝光量&#xff0c;同时也分别有自己的特点。 什么是感光度&#xff1f; ISO又叫感光度&#xff0c;指的是相机感光元件&#xff08;…