1.赋值----------是对原对象的引用,指向同一片内存地址 浅拷贝和深拷贝对于容器类型对象才有意义 2.浅拷贝----------对于一个对象的顶层进行拷贝 浅拷贝有三种方式: (1)切片 (2)工厂函数 如list() (3)copy.copy()函数 注意:切片以及copy.copy()函数所操作的对象必须是可变数据类型list,才是浅拷贝 3.深拷贝(copy.deepcopy()函数)-----对于一个对象所有层次进行拷贝(递归) 注意:对于元组对象,如果其内部元素均为不可变数据类…
在python中import跟from import都是用来导入的,但是导入的机制不同 1.import xxx:导入模块,或者文件夹,对于调用模块或者文件夹中子模块的变量或者函数,需要使用"模块".XX来调用 2.from xx import xx:导入的是函数或者变量,类,可以直接使用xx 3.from xx import *:导入xx中得全部"公开"变量,属性,公开指的是不是以"_"开头,除非模块或包中的"__all__"…
在python中,== 与 is 之间既有区别,又有联系,本文将通过实际代码的演示,力争能够帮助读到这篇文章的朋友以最短的时间理清二者的关系,并深刻理解它们在内存中的实现机制.扯淡的话不多说,下面马上呈上我的第一张图:  通过上面代码的比较,我想很容易看得出," is" 是用来比较 a 和 b 是不是指向同一个内存单元,而"=="是用来比较 a 和 b指向的内存单元中的值是不是相等.下面敲黑板,如果你自己的实验结果和我的不一致,请不要怀疑我,也不要怀疑自己的编译器,…
文件操作 文件的打开与关闭 打开文件 使用open(文件名,访问方式)函数,可以打开一个已存在的文件,或者创建一个新的文件. 示例如下: f = open('test.txt') # 访问方式可以省略,默认以r(只读)的形式 f = open('test.txt', 'w') f = open('test.txt', 'w', encoding="utf-8") encoding默认时使用与操作系统一样的编码方式,window为gbk,linux为utf-8.在window中有的ide…
深.浅拷贝总结 深拷贝 拷贝可变数据类型,如列表容器: a = [1, 2, [3, 4]] b = copy.deepcopy(a) a 与 b 所指的列表容器的空间地址不一致,即 id(a) != id(b) a 与 b 列表容器中的可变数据类型的空间地址不一致 a 与 b 列表容器中的不可变数据类型的空间地址一致 注意: a 列表容器中的某些元素发生改变时,b 容器中的相应元素是否会发生相同的改变? 答案是: a 容器中的任何元素发生任何变化,与 b 容器毫无瓜葛,b 中元素不会发生变化…
看一个例子 ? 1 2 3 4 d={'test':1} d_test=d d_test['test']=2 print d 如果你在命令行实践的话,会发现你改动的是d_test ,但是d 也跟着改变了. 通常这和我们期待的不一样. Why? 因为字典d 是一个object ,而d_test=d并没有真正的将该字典在内存中再次创建.只是指向了相同的object.这也是python 提高性能,优化内存的考虑. 实际场景 ? 1 2 3 4 5 6 d={"name":"&quo…
闭包函数初探 通常我们定义函数都是这样定义的 def foo(): pass 其实在函数式编程中,函数里面还可以嵌套函数,如下面这样 def foo(): print("hello world in foo") def bar(): print("hello world in bar") 此时我们调用foo函数,执行结果会是什么样子的呢?? hello world in foo 结果如上所示,只会执行foo函数的第一层函数,bar函数是不会被执行的.为什么呢 实际上…
1.对象的赋值 都是进行对象引用(内存地址)传递,即 b is a ,a 变 b也变 2.浅拷贝 会创建一个新的对象,对于对象中的元素,浅拷贝就只会使用原始元素的引用(内存地址) 当我们使用下面的操作时,会产生浅拷贝: 使用切片[:]操作 使用工厂函数(list/dir/set) 使用copy模块中的copy函数 3.深拷贝 会创建一个新的对象,并且对于对象中的元素,深拷贝都会重新生成一份(有特殊情况,下面会说明),而不是简单的使用原始元素的引用(内存地址) 拷贝的特殊情况: 对于非容器类型(如…
总之,比较内容相等使用 ‘==’ 1.is" 是用来比较 a 和 b 是不是指向同一个内存单元,而"=="是用来比较 a 和 b指向的内存单元中的值是不是相等 2.python有一个叫小整数对象池的东西,python为了优化速度,会把[-5,256]之间的数据提前存放在小整数对象池中,程序中只要用的[-5,256]之间的数据不会再重新创建一份,都是指向对象池中的同一份数据,除了这个区间之外的整数数据,每次使用时系统都会重新申请一块内存,用来存储数据,这样之前的现象也就不奇怪了…
1.函数式编程作为结构化编程的一种,正在受到越来越多的重视.那么什么事函数式编程呢? 在维基百科中给出了详细的定义,函数式编程又称泛函数编程,是一种编程规范,它将函数运算视为数学上的函数计算.简单的来说就是一步步的执行程序. 2.面向对象编程呢是具有对象概念的程序编程范例,同时也是一种程序开发的方法.简单地说呢就是抽象出一类方法为类,我们只需要执行一个指令就可以完成我们想要的目的,这是目前阶段较为合适和主流的开发模式,高效简洁,但同时这种编程思想需要大量的工作经验以及事物的流程非常清晰的高级工程…
很多时候我们在创建一个类的时候,在终端打印类或者查看的时候一般都不会得到一个太满意的结果 class T: def __init__(self): self.color="red" self.count = 2 t = T()t >>> <T object at 0x0000000003444E10> print(t) >>> <T object at 0x0000000003444E10> 类转化为字符串,直接打印结果一般都…
__getattr__与__getattribute__均是一般实例属性截取函数(generic instance attribute interception method),其中,__getattr__可以用在python的所有版本中,而__getattribute__只可以用到新类型类中(New-style class),其主要的区别是__getattr__只截取类中未定义的属性,而__getattribute__可以截取所有属性,下面用代码进行说明: (1)__getattr__ cla…
     主要的函数有  : match() search() findall() group() groups() split()  match (): 含义  开头匹配,匹配成功返回一个对象失败则返回  none #!/usr/bin/python import re re.match('youshi','youshini') print re.match 返回的结果: [root@Cnyunwei ~]# python 1.py <function match at 0x7f19e6f6c…
最近学web自动化时用到selenium库,感觉很神奇,遂琢磨了一下,写了点心得. 当我们输入以下三行代码并执行时,会发现新打开了一个浏览器窗口并访问了百度首页,然而这是怎么做到的呢? from selenium import webdriver driver = webdriver.Chrome() driver.get('http://www.baidu.com') 首先我们来看一下selenium库的结构: 很显然,selenium就是一个软件包,里面有两个一级子包,common和webd…
浅谈Java中的深拷贝和浅拷贝(转载) 原文链接: http://blog.csdn.net/tounaobun/article/details/8491392 假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short,float,double.long)同样适用于该类情况. 但是如果…
转载: 浅谈Java中的深拷贝和浅拷贝 假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short,float,double.long)同样适用于该类情况. 但是如果你复制的是一个对象,情况就有些复杂了. 假设说我是一个beginner,我会这样写: class Student { private int number; public int getNumb…
浅谈Python在信息学竞赛中的运用及Python的基本用法 前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在<算法竞赛入门经典-训练指南>中所说的一样,如果会用Python,在进行一些小程序的编写,如数据生成器时将会非常方便,它的语法决定了其简约性.本文主要介绍一下简单的Python用法,不会深入. Python的安装和实用 Linux(以Ubuntu系统为例) 一般的Linux都自带了Python,在命…
这篇文章主要介绍了Python中的赋值.浅拷贝.深拷贝介绍,Python中也分为简单赋值.浅拷贝.深拷贝这几种"拷贝"方式,需要的朋友可以参考下   和很多语言一样,Python中也分为简单赋值.浅拷贝.深拷贝这几种"拷贝"方式. 在学习过程中,一开始对浅拷贝理解很模糊.不过经过一系列的实验后,我发现对这三者的概念有了进一步的了解. 一.赋值 赋值算是这三种操作中最常见的了,我们通过一些例子来分析下赋值操作: str例 复制代码代码如下: >>>…
Python中的赋值.深拷贝与浅拷贝(内存地址) 1.python中的可变对象与不可变对象 (1) 可变对象:dict,list def dict_test(): a = {} b = a print(id(a)) # 140367329543360 a['a'] = 'hhhh' print('id a:' + str(id(a))) # id a:140367329543360 print('a:' + str(a)) # a:{'a': 'hhhh'} print('id b:' + st…
引用:https://www.jb51.net/article/142775.htm 列表赋值: 1 2 3 4 5 6 7 >>> a = [1, 2, 3] >>> b = a >>> print b [1, 2, 3] >>> a[0] = 0 >>> print b [0, 2, 3] 解释:[1, 2, 3]被视作一个对象,a,b均为这个对象的引用,因此,改变a[0],b也随之改变 如果希望b不改变,可以用…
赋值 在python中,赋值就是建立一个对象的引用,而不是将对象存储为另一个副本.比如: >>> a=[1,2,3] >>> b=a >>> c=a 对象是[1,2,3].分别由a.b.c三个变量其建立了相应的引用关系.而三个变量都不独占对象[1,2,3],或者说.能够通过不论什么一个变量来改动[1,2,3]这个对象. >>> c.append(4) >>> c [1, 2, 3, 4] >>> a…
开发|浅谈python数据类型 在回顾Python基础的时候,遇到最大的问题就是内容很多,而我的目的是回顾自己之前学习的内容,进行相应的总结,所以我就不玩基础了,很多在我实际生活中使用的东西,我会在文章中提一下.并且我自己会根据这些内容进行相应的补充与扩展. 文章定位:不是科普文,是自己对于自己学习的总结. 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点的描述.力求不含任何的自我感情色彩. 情感:用我自己的方式,解读知识点.力求通俗易懂,完美透析知识. 正文 正文的主要内…
开发|浅谈python基础知识 最近复习一些基础内容,故将Python的基础进行了总结.注意:这篇文章只列出来我觉得重点,并且需要记忆的知识. 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点的描述.力求不含任何的自我感情色彩. 情感:用我自己的方式,解读知识点.力求通俗易懂,完美透析知识. 目录 变量与常量的命名 变量的底层创建 注释方式 交互input函数 格式化输出 运算符 流程控制 正文 正文的主要讲述内容包括:变量与常量的命名:底层变量的创建方式:注释方式:交互i…
Python中,赋值与拷贝(深/浅拷贝)之间是有差异的,这主要源于数据在内存中的存放问题,本文将对此加以探讨. 1 赋值(添加名字) 赋值不会改变内存中数据存放状态,比如在内存中存在一个名为data的数据,此时若执行语句data_01 = data,则现在该份数据有了两个名称(data和data_01),其余都不发生改变,使用任何一个名称对数据进行操作,那么用另外一个名称拿数据时,数据会呈现之间发生的改变.示例如下: 图中,给列表分配了两个名称a与b,对a做改变时b会同样改变,对b做改变时a也会…
浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起了解一下对象和对象引用之间的区别和联系. 1.何谓对象? 在Java中有一句比较流行的话,叫做“万物皆对象”,这是Java语言设计之初的理念之一.要理解什么是对象,需要跟类一起结合起来理解.下面这段话引自<Java编程思想>中的一段原话: “按照通俗的说法,每个对象都是某个类(class)的一个实…
浅谈JavaScript中的闭包 在JavaScript中,闭包是指这样一个函数:它有权访问另一个函数作用域中的变量. 创建一个闭包的常用的方式:在一个函数内部创建另一个函数. 比如: function compareByProperty(propertyName){ returnfunction(obj1,obj2){ return obj1[propertyName] - obj2[propertyName]; } }   该例中,compareByProperty内部的匿名函数有权利访问c…
浅谈JS中的闭包 在介绍闭包之前,我先介绍点JS的基础知识,下面的基础知识会充分的帮助你理解闭包.那么接下来先看下变量的作用域. 变量的作用域 变量共有两种,一种为全局变量,一种为局部变量.那么全局变量的作用域为: 局部变量只能在定义此变量的函数体内使用,则局部变量的作用域为定义此变量的函数体.而全局变量可以全局使用.局部变量只有在调用函数的时候存在,函数调用完成之后立马就销毁了,而全局变量会一直存在. 首先我在全局变量中定义一个变量a,var a=0;那我们了解到变量a在内存中的存储是wind…
浅谈Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法. 一.final关键字的基本用法 在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量).下面就从这三个方面来了解一下final关键字的基本用法. 1.修饰类   当用final修饰一个类时,表明这个类不能被继承.也就是说,如果一个类你永远…
人们常说堆栈堆栈,堆和栈是内存中两处不一样的地方,什么样的数据存在栈,又是什么样的数据存在堆中? 这里浅谈Java中的栈和堆 首先,将结论写在前面,后面再用例子加以验证. Java的栈中存储以下类型数据,栈对应的英文单词是Stack 基本类型 引用类型变量 方法 栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享.但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性. 栈中主要存放一些基本类型的变量(int, short, long, byte, float, double, b…
浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起了解一下对象和对象引用之间的区别和联系. 1.何谓对象? 在Java中有一句比较流行的话,叫做“万物皆对象”,这是Java语言设计之初的理念之一.要理解什么是对象,需要跟类一起结合起来理解.下面这段话引自<Java编程思想>中的一段原话: “按照通俗的说法,每个对象都是某个类(class)的一个实…