Python基础——变量、对象和引用
2017-01-04 17:52
204 查看
首先需要知道的是,python语言是动态类型语言,即变量的类型是可以随着运行时间变化的,没有必要事先声明。一个变量在第一次赋值时创建,比如
对象是分配的一块内存,有足够的空间表示它所代表的的值,并且还有两个标准的头部信息:类型标识符,表示对象的类型;引用计数器,记录该对象被多少个变量或者对象引用。Python缓存了小整数和短字符串并对其进行复用,比如
而对于其他的值,Python会创建一个新的对象去保存该值,这样同一性判断结果为False。
python中变量的赋值:
第一个赋值语句的结果是,x引用内存中的对象4;第二个赋值语句运行后,y和x引用同一个对象,称作共享引用。如果此时再给x赋值,
重新赋值只是让x引用新的对象,并不会改变原引用对象。
但是对可以在原处进行修改的对象,重新执行上面的操作,结果会有所不同,比如
对于可以原处修改的对象,如果想进行拷贝,有以下方法:分片(适合序列)、copy模块、对象的copy()方法:
注意:无条件的分片以及字典copy方法只能进行顶层复制。如果需要对一个深层嵌套的数据结构进行完整拷贝,那么需要使用copy模块。
sys模块的getrefcount()函数可以返回对象的引用次数:
x = 3,创建了变量x并且指向对象3。类型的概念存在于对象而非变量中。
对象是分配的一块内存,有足够的空间表示它所代表的的值,并且还有两个标准的头部信息:类型标识符,表示对象的类型;引用计数器,记录该对象被多少个变量或者对象引用。Python缓存了小整数和短字符串并对其进行复用,比如
>>>x = 1 >>>y = 1 >>>x is y #is检查的是同一性,即两个变量是否引用同一对象;==操作符和is操作符不同,检查值是否相等 True
而对于其他的值,Python会创建一个新的对象去保存该值,这样同一性判断结果为False。
python中变量的赋值:
x = 4 y = x
第一个赋值语句的结果是,x引用内存中的对象4;第二个赋值语句运行后,y和x引用同一个对象,称作共享引用。如果此时再给x赋值,
>>>x = 6 >>>y 4
重新赋值只是让x引用新的对象,并不会改变原引用对象。
但是对可以在原处进行修改的对象,重新执行上面的操作,结果会有所不同,比如
>>>x = [1,2,3]#x[0]引用对象1... >>>y = x >>>y[2] = -1#改变y所引用的元素对象 >>>x [1,2,-1] #x的值被改变了!
对于可以原处修改的对象,如果想进行拷贝,有以下方法:分片(适合序列)、copy模块、对象的copy()方法:
y=x[:]#创建新的对象,y指向新的内存空间 or from copy import deepcopy y = deepcopy(x)
注意:无条件的分片以及字典copy方法只能进行顶层复制。如果需要对一个深层嵌套的数据结构进行完整拷贝,那么需要使用copy模块。
sys模块的getrefcount()函数可以返回对象的引用次数:
>>>from sys import getrefcount >>>getrefcount(1)
相关文章推荐
- [零基础学Python]深入变量和引用对象
- python中的对象和引用 分类: python基础学习 2013-10-30 16:20 264人阅读 评论(0) 收藏
- 跟老齐学Python之深入变量和引用对象
- python对象、引用、全局变量和局部变量的关系
- Python对象引用(变量)
- python的全局变量(属性的用法),私有属性,计算对象引用数
- python函数参数是值传递还是引用传递(以及变量间复制后是否保持一致):取决于对象内容可变不可变
- 零基础学python-6.1 变量、对象与引用
- python 共享引用:多个变量引用同一对象
- python 类变量和对象变量的区别联系-----类的基础(二)
- JavaSE8基础 instanceof 判断引用变量指向的是一个类的具体对象吗
- Python基础:Python的变量和对象
- 零基础学python-6.1 变量、对象与引用
- 对python变量和对象引用的探讨
- python基础----函数的定义和调用、return语句、变量作用域、传参、函数嵌套、函数对象、闭包、递归函数
- Python基础:Python的变量和对象
- 跟老齐学Python之深入变量和引用对象
- 零基础学python-6.1 变量、对象与引用
- Python3.X基础语法(数据类型/对象引用/组合数据类型/逻辑操作符/控制流语句/算数操作符/输入输出/函数创建和引用)001
- python的全局变量(属性的用法),私有属性,计算对象引用数