Python学习备忘录2

###2022年10月4日
本文是《Python学习备忘录》的第2部,前面7章需要看《Python学习备忘录》
8、对象引用
8.1 正确认识Python中的变量
Python中,变量不是对象的的盒子,而只是对象盒子上的标签,一个盒子可以贴多个标签。

8.1 is和’‘''的区别
is是比较两个变量指向的引用是否为同一个引用,底层是比较两个变量的引用的id()的值是否一致,
‘’
’'是比较两个变量的值是否相等,底层调用__eq__方法进行比较。

8.2 元组的相对不可变性
元组与多数Python集合一样,保存的是对象的引用。如果引用对象是可变的,即使元组本身不可变,元素依然可变。也就是说,元组的不可变特性其实是指tuple数据结构的物理内容(即保存的引用)不可变,与引用的对象无关。

8.3 并非所有的变量都是对象的引用
str、bytes和array.array等单一类型序列是扁平的,它们保存的不是引用,而是在连续的内存中保存数据本身(字符、字节和数字)。

8.4、默认做浅复制
8.4.1 复制列表(或多数内置的可变集合)最简单的方式是使用内置的类型构造方法。如:
l1 = [3, [44, 55], (7, 8, 9)]
l2 = list(l1)
对列表或其他可变序列来说,还能使用简洁的l2 = l1[:]语句创建副本。
然而,构造方法或者[:]做的是浅复制(即复制了最外层容器,副本中的元素是源容器中元素的引用)。如果所有元素是不可变的,那么这样没有问题,还能节省内存。但是,如果有可变的元素,可能就会导致意想不到的问题。

copy模块的copy和deepcopy函数能为任意对象做浅复制和深复制。

8.4.2 函数的参数
1)Python函数内部的形参是实参中各个引用的副本,也就是浅复制。此时,如果传入的实参是可变的,那么在函数内部就可以修改这个实参。
2)不要将可变类型作为参数的默认值,尤其不要在类的__init__方法中将可变类型作为默认值。
因为所有的实例,用的是同一个副本(即浅复制),如果是可变类型,则不同实例都会修改这个副本。比如一个类有3个实例,这三个实例又都用了同一个列表默认值,则它们都会修改这个列表,就会容易引发意想不到的后果。

8.4.3 del语句
del语句删除名称,而不是对象。仅当删除的变量保存的是对象的最后一个引用或者无法得到对象时,del语句才会导致对象被当垃圾回收。

8.4.4垃圾回收
在CPython中,垃圾回收主要使用的算法是引用计数。实际上,每个对象都会统计有多少引用指向自己。当引用计数归零时,对象立即就被销毁:CPython会在对象上调用__del__方法(如果定义了),然后释放分配给对象的内存。

9、符合python风格的对象
9.1 classmethod与staticmethod
classmethod装饰器定义了操作类的方法,由它装饰的方法第一个参数的类本身,而不是实例。它最常见的用途是定义备选构造方法。按照约定,类方法的第一个参数名为cls(但是python并不介意具体怎么命名),并且无论有没有指明第一个参数名,classmethod装饰的方法第一个参数始终是这个类。

staticmethod装饰器装饰的函数是静态函数,其实就是一个普通函数,只是碰巧在类的定义体中而不是模块层定义,它装饰的函数第一个参数不是特殊值。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系方塘网进行投诉反馈,一经查实,立即删除!

相关文章

基于nodejs的在线跑腿系统-计算机毕业设计

项目介绍 系统选用B/S模式,应用nodejs技术,MySQL为后台数据库。系统主要包括首页,个人中心,用户管理,跑腿管理,服务类型管理,服务信息管理,跑腿接单管理,订单完成管理,订单评价管理,系统管理等功能模块。 本文首先介绍了在线跑腿系统的技术发展背景与发展现状,然后遵循软件常规…

常见的数据集合——栈

一、简介 栈(Stack)是一种特殊的线性数据集合,按照后进先出的规则进行操作,当我们在对栈进行入栈(push())或出栈(pop())操作时,只可以在栈顶进行操作。栈的实现结构可以是一维数组或链表来实现,用数组实现的栈叫作顺序栈&#x…

MATLAB-随机森林实现数据回归分析预测

随机森林指的是利用多棵树对样本进行训练并预测的一种分类器。随机森林是一个包含多个决策树的分类器, 并且其输出的类别是由个别树输出的类别的众数而定。随机森林的核心就是将多个分类器结合起来形成强分类器,是一种集合的思想。随机森林是既可以做分类任务也可以做回归任务…

FPGA驱动eMMC系列(二)-------上电初始化

一. 简介 本篇文章将介绍eMMC如何上电启动,并且初始化进入到我们所需要的模式当中去,同样只介绍相关的内容,一些无关却重要的知识点,可以自行查看手册。 二. 上电启动 手册上面有对这部分的描述,可惜的是&#xff0…

数据分析可视化05 框架搭建:PyEcharts 数据可视化环境

在上一个小节,我介绍了 Echarts 图表可视化组件基础,了解了 Echarts 和静态页面结合的基本使用方法。本节我们来看一下,如何使用 Python 开发基于 Echarts 的图表组件,这里面需要用到 Echarts 的 Python 语言定制版本 PyEcharts 框…

第一章:前言

第一章:前言 1.1:微服务架构理论 微服务架构概述 ​ 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务…

新手必会的Linux常用系统工作命令

新手必会的Linux常用系统工作命令1.echo命令2.date命令3.reboot命令/poweroff命令4.wget命令5.ps命令6.top命令7.pidof命令8.kill命令1.echo命令 echo命令用于在终端输出字符串或变量提取后的值,格式为“echo [字符串 | $变量]” 例如: 在终端上显示某…

代理和负载均衡是什么?

反向代理 反向代理,就是代理服务器代理了客户端,去和目标服务器进行交互。 github加速器就是正向代理 反向代理,代理服务器代理的是服务器,去和客户端交互。 反向代理,用户获取资源,访问的是代理服务器。 …

数据同步工具—DataX—Web部署使用

DataX—Web 部署使用 Datax 的使用过程中,我们会发现,不管是利用 java 调用以及 python 命令启动的方式,我们都无法进行任务的管理,并且每次执行任务前,我们 都需要编辑 Json 配置文件,这是比较繁琐的&…

Cherno的Cpp教程笔记004: 链接器如何工作

现在链接的主要焦点是找到每个符号和函数在哪里。每个文件被编译成一个单独的目标文件一个翻译单元,它们彼此之间没有关系所以如果我们决定把我们的程序分割成多个C文件即使只有一个文件,也许知道入口在哪main函数 这时编译没有问题,但是build链接会出问…

二维前缀和_二维差分

文章目录一、前缀和1. 前缀和使用:计算a[l]~a[r]之间的和2.二维前缀和使用二、差分1.差分使用:a[l]~a[r] 都 c例题2.二维差分使用例题一、前缀和 1. 前缀和 已知原数组A:a[1] .... a[n] 构造前缀和数组:s[1] .... s[n] 初始化…

研一Python基础课程第一周课后习题分享(含代码)

一、日期格式化输出 描述‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬ 在三行…

性能测试中MySQL数据库慢查询使用方法【杭州多测师】【杭州多测师_王sir】

MYSQL 慢查询使用方法MYSQL 慢查询介绍分析 MySQL 语句查询性能的问题时候,可以在 MySQL 记录中查询超过指定时间的语句,我们将超过指定时间的 SQL 语句查询称为“慢查询”。MYSQL 自带的慢查询分析工具 mysqldumpslow 可对慢查询日志进行分析&#xff1…

Visual Studio软件调用已经配置、编译好的C++第三方库的方法

本文介绍在Visual Studio软件中调用C 各种配置、编译完毕的第三方库的方法。 在撰写C 代码时,如果需要用到他人撰写的第三方库(例如地理数据处理库GDAL、矩阵运算库Armadillo等),并不能像Python等语言那样,安装好库后直…

详解:Java关联 HTML 中的表格,超链接,表单

详解:Java关联 HTML 中的表格,超链接,表单 每博一文案 看过这样一句话:“心里不要觉得苦,来人间是还债的;前世姻缘今生还,有相欠必相见,长则余生,短则几年。” 年轻时&a…

有序单链表的插入

相比有序表,我们单链表插入就方便多了,起码有一点,我们有指针指引 ,就不用再把传入位置腾出来了 , 方便了插入 但是,我们要把新节点插入到有序单链表 , 必不可少的一步是从头指针遍历 ,找到一个区间 , 左端点比插入节点小 , 右端点比插入结点大, 然后把新元素插入到这之间就可…

【存储】超融合(HCI)和云是什么以及区别|超融合和虚拟化的区别

目录 什么是超融合(HCI) 简介 超融合和云计算的区别 超融合和虚拟化的区别 与虚拟化对比来解释超融合 超融合的技术特点 超融合的优势和限制 超融合应用场景 超融合厂商 云计算 (一)云是什么 (二)云计算是什么 (三)特点 (四)云资源的部署模式 (五)云计算的优劣势 (六)云计算的服…

python爬虫的防盗链

文章目录前言一、防盗链是什么?二、 防盗链如何实现三、分析四、 对有防盗链的网站进行爬取对有视频连接的网站发出请求并且获取源码信息提取出我们的视频网站对我们提取的网址进行修改,和拼凑下载视频结束爬取完整代码前言 随着python的发展网页的反爬…

django基于python的酒店预订管理系统--宾馆管理系统-计算机毕业设计

项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,宾馆管理系统就是信息时代变革中的产物之一。 任何系统都要遵循系统设…

数据分析可视化02 建设方法:数据可视化分析的庖丁之术

上一课时,我介绍了数据可视化分析的基本概念,通过对比的方式,讲述了数据可视化分析的概念定义和知识体系,相信你对数据可视化分析已经有了一个基本的了解。本课时,我将给大家分享数据可视化分析的方法论,内…