Python中的引用与copy介绍

目录
  • Python中的引用和copy
    • 1、引用整型数据及列表
    • 2、传递引用
    • 3、copy模块中的copy()和deepcopy()

Python中的引用和copy

1、引用整型数据及列表

这里以整型数据类型及列表为例

对于赋值字符串整型元组等不可更改数据的变量,其保存的仅是值,改变新变量中的值并不会影响原来变量中的值

origin = 1
new = origin
print("new = ",new)
new = 2
print("origin = ",origin)

输出结果:

 

如果将列表或者字典赋值给一个变量,(这里以列表为例)则变量所保存的并不是一个列表,而是原列表的引用,相当于一个通向列表的通道,指向原列表(感觉类似于C语言中的指针)

origin = [1,2,3]
new = origin
print("new = ",new)
new[0] = 0
print("origin = ",origin)

输出结果:

 

如上述示例程序,改变新变量对应列表元素的值,原变量中列表元素的值相应也改变了,这说明这两个变量指向同一个列表,保存的是该列表的引用

2、传递引用

作为传递给函数变量,其包含的值同样为列表的引用。

def expand(transmit):
    transmit.append('haha')
list = [1,2,3]
expand(list)
print(list)

输出结果:

 

3、copy模块中的copy()和deepcopy()

  • copy.copy()函数可以用来复制列表或字典这样的可变值,复制后的列表与原列表为两个独立的列表
import copy
origin = [1,2,3]
new = copy.copy(origin)
new[0] = 0
print("origin = ",origin)
print("new = ",new)

如果所需要复制的列表中套有列表,则使用deepcopy()函数将其完整复制

import copy
origin =[[1,2,3],['a','b','c']]
new = copy.deepcopy(origin) #使用深copy
new[0][0] = 0
print("origin = ",origin)
print("new = ",new)

输出结果:

 

注意:如果在嵌套列表的情况下使用copy.copy(),则无法将内部列表复制出来

import copy
origin =[[1,2,3],['a','b','c']]
new = copy.copy(origin) #使用浅copy
new[0][0] = 0
print("origin = ",origin)
print("new = ",new)

输出结果:

到此这篇关于Python中的引用与copy介绍的文章就介绍到这了,更多相关Python中的引用和copy内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python中的引用与copy介绍

    目录 Python中的引用和copy 1.引用整型数据及列表 2.传递引用 3.copy模块中的copy()和deepcopy() Python中的引用和copy 1.引用整型数据及列表 这里以整型数据类型及列表为例 对于赋值字符串.整型.元组等不可更改数据的变量,其保存的仅是值,改变新变量中的值并不会影响原来变量中的值 origin = 1 new = origin print("new = ",new) new = 2 print("origin = ",ori

  • python进程池实现的多进程文件夹copy器完整示例

    本文实例讲述了python进程池实现的多进程文件夹copy器.分享给大家供大家参考,具体如下: 应用:文件夹copy器(多进程版) import multiprocessing import os import time import random def copy_file(queue, file_name,source_folder_name, dest_folder_name): """copy文件到指定的路径""" f_read = op

  • python深copy和浅copy区别对比解析

    这篇文章主要介绍了python深copy和浅copy区别对比解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 首先先看一段代码 import copy a = [1, 2, 3, [4]] b = a c = a.copy() d = copy.deepcopy(a) e = copy.copy(a) a.append(4) a[3].append(5) print('a值为 {} 地址为 {}'.format(a, id(a))) prin

  • 图解Python中深浅copy(通俗易懂)

    一.深浅copy 赋值运算 l1 = [1, 2, 3, [22, 33]] l2 = l1 l1.append(666) print(l1) # [1, 2, 3, [22, 33], 666] print(l2) # [1, 2, 3, [22, 33], 666] 图解: 注意:l2 = l1是一个指向,是赋值,和深浅copy无关. 浅copy 其实列表是一个一个的槽位,每个槽位存储的是该对象的内存地址 例1. 给大列表添加元素 l1 = [1, 2, 3, [22, 33]] l2 =

  • python利用os模块编写文件复制功能——copy()函数用法

    我就废话不多说了,大家还是直接看代码吧~ #文件复制 import os src_path=r'E:\Pycharm\python100题\代码' target_path=r'E:\Pycharm\python100题\123' #封装成函数 def copy_function(src,target): if os.path.isdir(src) and os.path.isdir(target): filelist=os.listdir(src) for file in filelist: p

  • python多线程案例之多任务copy文件完整实例

    本文实例讲述了python多线程案例之多任务copy文件.分享给大家供大家参考,具体如下: import os import multiprocessing def copy_file(q,file_name, old_folder_name, new_folder_name): """完成文件的复制""" old_f = open(old_folder_name+"/"+file_name, "rb")

  • Python的对象传递与Copy函数使用详解

    1.对象引用的传值或者传引用 Python中的对象赋值实际上是简单的对象引用.也就是说,当你创建一个对象,然后把它赋值给另一个变量的时候,Python并没有拷贝这个对象,而是拷贝了这个对象的引用.这种方式相当于值传递和引用传递的一种综合.如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过"引用传递"来赋值.如果函数收到的是一个不可变变量(比如数字.字符串或者元祖)的引用,就不能直接修改原始对象--相当于通过"值传递"来赋值.

  • python3 深浅copy对比详解

    一.赋值对比 1.列表 l1 = [1,2,3] l2 = l1 l1.append('a') print(l1,l2) #[1, 2, 3, 'a'] [1, 2, 3, 'a'] print(id(l1),id(l2)) #43499848 43499848 #可以看到两个列表的值以及id值相同,对应的是同一个内存地址 2.字典 dic = {'name':'barry'} dic1 = dic dic['age'] = 18 print(dic,dic1) #{'name': 'barry

  • 简单了解Python字典copy与赋值的区别

    描述 Python 字典(Dictionary) copy() 函数返回一个字典的浅复制. 语法 copy()方法语法: dict.copy() 返回值 返回一个字典的浅复制. 实例 以下实例展示了 copy()函数的使用方法: dict1 = {'Name': 'Zara', 'Age': 7}; dict2 = dict1.copy() print "New Dictinary : %s" % str(dict2) New Dictinary : {'Name': 'Zara',

  • Python中的引用和拷贝实例解析

    这篇文章主要介绍了python中的引用和拷贝实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.引用 a = ['a', 'b', 'c'] b = a print(id(a)) print(id(b)) 135300560 135300560 可以看到,变量a 和 b 的 id是完全一样的,这就说明a和b是同时指向内存的同一个区域的,即b随a的变化而变化. a = ['a', 'b', 'c'] b = a a[1] = 'd' pr

  • Python中的引用知识点总结

    本篇介绍Python中的引用. 首先想一想如图示例. 在python中,值是靠引用来传递来的. 用id()来判断两个变量是否为同一个值的引用.如图. 图解引用.如图. 可变类型与不可变类型.如图.

  • Python中字典的相关操作介绍

    字典的添加与修改 # coding:utf-8 if __name__ == '__main__': example = {'name': 'xie', 'age': 27} example2 = example.copy() example3 = example.copy() ''' 例1:使用dict[key] = value,这种方法如果dict中存在该key,则修改该key上的值=value,不存在该key,则创建该key=>value 例2:使用dict.setdefault(key,

  • Python中最神秘missing()函数介绍

    目录 前言 1.有点价值的missing() 2.神出鬼没的missing() 3.被施魔法的missing() 4.小结 前言 一个非常神秘的魔术方法. 这个方法非常不起眼,用途狭窄,我几乎从未注意过它,然而,当发现它可能是上述"定律"的唯一例外情况时,我认为值得再写一篇文章来详细审视一下它. 本文主要关注的问题有: (1) missing()到底是何方神圣? (2) missing()有什么特别之处?擅长"大变活人"魔术? (3) missing()是否真的是上

  • Python中线程锁的使用介绍

    目录 前言 方式一:使用try/finally,确保锁肯定会被释放. 方式二:with语句避免使用try/finally. 总结 前言 当有多个线程,且它们同时访问同一资源时,需要考虑如何避免线程冲突.解决办法是使用线程锁.锁由Python的threading模块提供,并且它最多被一个线程所持有.当一个线程试图获取一个已经锁在资源上的锁时,该线程通常会暂停运行,直到这个锁被释放.看看下面的不具备锁功能的例子: #!/usr/bin/env python3 # -*- coding:utf-8 -

  • Python中安装库的常用方法介绍

    目录 方法一:需要在网络条件下安装 方法二:离线安装 方法三:换源安装 总结 方法一:需要在网络条件下安装 win+R进入运行框输入命令cmd 点击确定进入 普通下载:pip install 模块名字 例如:输入 pip install pygame pip install numpy pip install xlwt xlwt代表需要安装所需包和库等 列出安装版本:pip list 和pip freeze 卸载模块: pip uninstall xlwt Y--确定卸载,n--否 指定版本下载

  • Python中缓存lru_cache的基本介绍和讲解

    目录 一.前言 二.举例说明 三.lru_cache 用法 1.参数详解 2. lru_cache不支持可变参数 四.lru_cache 与redis的区别 五.总结 一.前言 我们经常谈论的缓存一词,更多的类似于将硬盘中的数据存放到内存中以至于提高读取速度,比如常说的redis,就经常用来做数据的缓存.Python的缓存(lru_cache)是一种装饰在被执行的函数上,将其执行的结果缓存起来,当下次请求的时候,如果请求该函数的传参未变则直接返回缓存起来的结果而不再执行函数的一种缓存装饰器. 那

  • Python中python-nmap模块的使用介绍

    目录 一.python-nmap的安装 二.python-nmap模块的使用 1.portScanner()类 环境: python 2.7.13 Windows和Linux默认都是不安装python-nmap的,我们得手动安装 一.python-nmap的安装 linux: wge t http://xael.org/pages/python-nmap-0.6.1.tar.gz tar  -zxvf  python-nmap-0.6.1.tar.gz cd  python-nmap-0.6.1

  • Python中的引用和拷贝规律详解

    目录 Python一切皆引用 情况一:直接引用 情况二:复制 情况三:深复制 总结 python的可变不可变与各种浅拷贝深拷贝规则,一并梳理. Python一切皆引用 在C++/Java里,int a = 1就是创建变量为a,赋值为1:int b = a就是创建变量b,赋值为a的值.a与b是毫不相干的,即“变量是盒子”,但是这不利于理解Python中的一个变量定义.在Python里,我们把变量视为“一个实际存储的引用”(图源:<流畅的python>). 所以在python里,a = [1, 2

随机推荐