从今天开始,陆续更新一些 相关的面试题,在学习的路上,与君共勉,我的文采好棒哦! (黑人问号)WTF,喜欢学,爱咋咋地。
编译型语言:把做好的源程序全部编译成二进制的可运行程序。然后,可直接运行这个程序。如:C,C++
字符串(str):字符串是用引号括起来的任意文本,是编程语言中最常用的数据类型。 可以用来连接字符串,将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串。 切割字符串,得到一个列表。
del:根据下标进行删除 sort:是将list按特定顺序重新排列,默认为由小到大,参数 reverse=True 可改为倒序,由大到小。 使用 pop 方法来指定删除字典中的某一项 用于创建一个新字典,以序列中元素做字典的键,value 为字典所有键对应的初始值
计算机在最初的设计中,采用了8个比特(bit)作为一个字节(byte)的方式。一个字节能表示的最大的整数就是255(二进制=十进制255),如果要表示更大的整数,就必须用更多的字节。 == 是比较操作符,只是判断对象的值(value)是否一致,而 is 则判断的是对象之间的身份(内存地址)是否一致。对象的身份,可以通过 id() 方法来查看。
|
python中不可变数据类型的定义为:当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,就称不可变数据类型,包括:int
(整型)、string
(字符串)、tuple
(元组)
首先我们来看一下整型为什么是不可变数据类型。给一个变量x
赋值,然后改变这个x的值,输出前后两次的内存地址id和数据类型type
id()
:获取对象的内存地址
type()
:当只有一个参数的时候,返回对象的类型。当有三个参数的时候返回一个类对象。
从上面的代码我们可以得出,变量x为整型,且当x的值发生改变的时候,变量的内存地址也发生了改变。所以整型是不可变的数据类型。
根据上面的实例,我们把变量x的值换成字符串试试,看能不能得出字符串是不可变数据类型的结论呢~
代码中当变量改变时,变量的内存地址由 变为了 。所以字符串是不可变数据类型。
元组被称为只读列表,即数据可以被查询,但不能被修改。如果我们强行修改元组中的数据,会报错。
python中对可变数据类型的定义为:当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,就称可变数据类型。包括:set(集合)、list(列表)、dict(字典)
我们先来看一下集合,定义一个集合set1,改变set1的值,且输出两次的内存地址
从上面代码我们可以看出,即使一个集合发生了改变,这个集合的内存地址是不变的。所以集合是可变数据类型。
当列表中的值发生了改变时,内存地址依旧不变,所以列表是可变数据类型。
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。字典中的key值必须是可哈希的数据类型,也就是整型,字符串,元组等。
从上面代码可以看出,当字典中的元素发生改变时,内存地址不变,都是。所以字典是可变数据类型。
Python中,一切皆对象。
对象是分配的一块内存,有足够的空间去表示它们所代表的值。
变量是指向对象的一个引用。变量只是一个临时标签,没有类型。
共享引用:多个变量引用了同一个对象。共享引用下,不可变对象和可变对象的差别比较大。
不可变对象不允许对自身内容进行原地修改。
对一个不可变对象进行赋值,实际上是创建一个新对象,再让变量指向这个新对象。
实例化新对象,开辟新内存空间,产生新地址。对象的id改变。
可变对象则可以对自身内容进行原地 (in-place) 修改。
对一个可变对象赋值,实际上是使其内容原地 (in-place)修改,没有返回值。
不开辟新的内存空间,地址不变。对象的id不变。
共享引用:多个变量引用了同一个对象。
不可变对象的共享引用中:
由于不可变对象本身不可原地修改,当多个变量共同引用同一对象时,
若一个变量改变引用,即创建新对象,新建引用,
其他变量引用的原对象不变。
可变对象的共享引用中:
由于可变对象本身支持原地修改,当多个变量共同引用同一对象时,
若可变对象本身原地被修改,该对象id不变,
多个变量同时引用的该对象本身,所以多个变量引用的值都改变。
原地修改 != 重新赋值
原地修改 != 重新赋值
原地修改 != 重新赋值
重新赋值,不可变对象和可变对象,因为新建对象,所以id都会改变。
对象的头部信息含有:类型标识符,自动识别类型。(可变和不可变数据类型,表述不准确。)
赋值语句:是把"="左边的变量名,绑定到"="右边的新建的对象/表达式中。
关于赋值"=",不可变对象和可变对象,无差别。
都是重新创建对象,变量去指向新的对象。
identity是对象身份的唯一识别标识符,调用id()函数查看。
#不可变对象int赋值为例:
# 变量名 a 重新赋值后,对象 id 改变,即变量引用对象的内存空间发生了变化。
#可变对象list赋值为例:
# 变量名 L1 重新赋值后,对象 id 改变,即变量引用对象的内存空间发生了变化。
对象的值相同,但是不是同一对象。
# 不可变对象int为例:
#可变对象list赋值为例:
# 不同对象引用的值相同,但是变量引用的对象不同,id不同。
# 小整数和短字符串例外:
# 实际在python中,[-5,256]的整数和短字符串有缓存池,以便于重复利用,所以id会不变。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。