可变对象和不可变对象 在python中一切皆对象.在Python中不存在所谓的值传递调用,一切传递都是对象的引用,也可认为是传址. python中,对象分为可变(mutable)和不可变(immutable)两种类型,元组(tuple).数值型(number).字符串(string)均为不可变对象,而字典型(dictionary)和列表型(list)的对象是可变对象. 不可变对象 见一个例子,分析不可变对象的特点 python内置id()函数,用于返回对象的唯一标识(identity).id()…
def func(numbers = [], num=1): numbers.append(num) for number in numbers: print(number) func() >>> 1 func() >>> 1 >>> 1 func() >>> 1 >>> 1 >>> 1 从上面代码中可以看出,函数的打印的是同一个列表对象numbers,因为他们的id值是一样的,只不过是列表中的元素…
Python中使用operator模块实现对象的多级排序 今天碰到一个小的排序问题,需要按嵌套对象的多个属性来排序,于是发现了Python里的operator模块和sorted函数组合可以实现这个功能. 比如我有如下的类关系,A对象引用了一个B对象, class A(object): def __init__(self, b): self.b = b def __str__(self): return "[%s, %s, %s]" % (self.b.attr1, self.b.att…
一. 元组与列表的区别 元组中的数据一旦定义就不允许更改. 元组没有append().extend()和insert()等方法,无法向元组中添加元素. 元组没有remove()或pop()方法,也无法对元组元素进行del操作,不能从元组中删除元素. 从效果上看,tuple()冻结列表,而list()融化元组. 元组的速度比列表更快.如果定义了一系列常量值,而所需做的仅是对它进行遍历,那么一般使用元组而不用列表. 元组对不需要改变的数据进行"写保护"将使得代码更加安全. 元组可用作字典键…
在<第4.7节 Python特色的序列解包.链式赋值.链式比较>中老猿介绍了序列解包,<第5.2节 Python中带星号的函数参数实现参数收集>介绍了函数的参数收集,实际上函数的参数收集就是用序列解包的功能实现的.只是序列解包是将序列中多出的部分存放到星号后面的列表变量,而函数参数收集是将多出的参数存放到收集参数对应的元组变量.具体内容请参考上面介绍的两篇文章. 老猿Python,跟老猿学Python! 博客地址:https://blog.csdn.net/LaoYuanPytho…
一.序列解包 序列解包(或可迭代对象解包):解包就是从序列中取出其中的元素的过程,将一个序列(或任何可迭代对象)解包,并将得到的值存储到一系列变量中. 一般情况下要解包的序列包含的元素个数必须与你在等号左边列出的目标个数相同,否则Python将引发异常.但如果要解包序列元素个数与左边变量数不同的情况下,可使用星号运算符(*)来收集多余的值,这样无需确保值和变量的个数相同,还可将带星号的变量放在任何位置.赋值语句的右边可以是任何类型的序列,但带星号的变量最终包含的总是一个列表.在变量和值的个数相同…
一.序列解包 序列解包(或可迭代对象解包):解包就是从序列中取出其中的元素的过程,将一个序列(或任何可迭代对象)解包,并将得到的值存储到一系列变量中. 一般情况下要解包的序列包含的元素个数必须与你在等号左边列出的目标个数相同,否则Python将引发异常.但如果要解包序列元素个数与左边变量数不同的情况下,可使用星号运算符(*)来收集多余的值,这样无需确保值和变量的个数相同,还可将带星号的变量放在任何位置.赋值语句的右边可以是任何类型的序列,但带星号的变量最终包含的总是一个列表.在变量和值的个数相同…
用import关键字导入模块的几种方式: #python是自解释的,不必多说,代码本身就是人可读的 import xxx from xxx import xxx from xxx import xx1,xx2,xx3 from xxx import * import xxx as xxx from xxx import xxx as xxx 序列解包赋值: x,y,z = 1,2,3 #右侧1,2,3实际是一个(1,2,3)的tuple,然后解包出来再分别赋值 x,y = y,x #同理,交换赋…
一.序列封包与序列解包 把多个值赋给一个变量时,Python会自动的把多个值封装成元组,称为序列封包. 把一个序列(列表.元组.字符串等)直接赋给多个变量,此时会把序列中的各个元素依次赋值给每个变量,但是元素的个数需要和变量个数相同,这称为序列解包. 什么叫做序列?序列可以理解为可以进行切片.相加相乘.索引.成员资格(用关键字in.not in关键字判断某个元素在不在这个序列),例如:列表.元组.字符串就是常见的序列.(Python中内置的三种数据结构:列表.元组.字典,只有字典不是序列) 序列…
序列解包(解压缩) 所学的解压缩 如果我们给出一个列表,我们需要一次性取出多个值,我们是不是可以用下面的方式实现呢? name_list = ['nick', 'egon', 'jason'] x = name_list[0] y = name_list[1] z = name_list[2] print(f'x:{x}, y:{y}, z:{z}') x:nick, y:egon, z:jason 讲真,上面的方法真的是谁用谁知道,我们可以试一试解压缩. 解压缩可以这样理解:超市打包是把多个商…