windows安装python虚拟环境
前提:安装好了python和pip 步骤: 1.管理员身份打开Powershell 2.安装 pip install virtualenv 3.创建你自己的文件夹并进入该文件夹 4.创建环境: virtualenv . 5.激活环境: .\Scripts\activate 如果报错: set-executionpolicy unrestricted
python深拷贝与浅拷贝
要理解深拷贝和浅拷贝,首先要理解可变对象和不可变对象。
不可变对象:该对象所指向的内存中的值不能被改变,修改对象的值时,由于其指向的值不能被改变,因此实际上是在内存中重新开辟一个地址用来存储新的值,然后将对象指向这个新值。本质上是两个对象,赋值前后对象id发生了变化。python中的不可变对象包括:bool、int、str、float、tuple、frozenset、None。
可变对象:该对象所指向的内存中的值可以被改变。变量(引用)的值发生改变时,实际上是其指向的值直接发生改变,没有开辟新的内存地址。python中的可变对象包括:list、dict、set。
python中的赋值语句不会创建对象的拷贝,仅仅只是将变量名称绑定到一个对象上。对于不可变对象,这种操作不会产生差别,但是处理可变对象或可变对象的集合时,你可能希望创建这些对象的“真实拷贝”,在修改创建的拷贝时不改变原始的对象。
浅拷贝:通常指构造一个新的集合对象,然后用原始对象中的找到的子对象的引用来填充它。浅层的复制只有一层深度,复制过程中不会递归,所以不会创建子对象本身的副本。
深拷贝:深拷贝使复制过程递归,即首先构造一个新的集合对象,然后递归地用在原始对象中找到的子对象的副本来填充它。通过深拷贝复制对象,是原始对象及其所有子对象的完全独立的克隆。
python的赋值语句不会复制对象,而是创建一个对象的引用(可以理解为标签)。代码示例:
上图示例中,创建了两个变量(实际两个变量表示的是同一个列表),但两个变量id相同,指向的是同一个内存地址。
仍以python列表为例,通常我们会用list()函数来复制一个列表,这个复制过程,就是一个浅拷贝。代码示例:
可以看到,通过浅拷贝方式,确实是复制了一个列表。复制前后两个变量的id不同,两个变量指向两个不同的内存地址,且修改其中一个列表中的值,对另一个列表不会产生影响。
而之所以称这种复制方式为浅拷贝,是因为这种拷贝只对一层对象有效,当列表中有子对象时,对子对象的修改将同时影响原始对象和拷贝对象。代码示例:
如上图所示,修改第一层次的成员值,不会影响拷贝对象;修改子对象的成员值(第二层次),会同时影响原始对象和拷贝对象。这是因为浅拷贝没有递归复制原始对象的值,只复制了第一层,因此拷贝对象中复制了子对象的引用,并没有复制子对象的值。
python标准库中的copy模块提供了创建python对象的浅拷贝和深拷贝的接口。使用deepcopy()函数,可以创建一个对象的深拷贝。代码示例:
如上图所示,通过深拷贝复制的对象递归克隆了原始对象,两者是完全独立的。无论怎样修改其中一个对象,都不会对另一个对象产生影响。
微信关注我们
转载内容版权归作者及来源网站所有!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。
为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。
Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。
Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。