python中的可变与不可变对象的区别

Python中不可变对象:int, float, str, tuple, bool

Python中可变对象: list, dict, set

不可变对象:

  a = 5 PK a= 4: 在5的内存地址和4的内存地址是不同的

可变对象:

  list = [1, 2, 3, 4] PK list.append(5, 6): 这中的list的内存地址是相同的

* 放在dict 和 set中的元组或者列表中的每一个对象都是用作为key的。如(1,2,3)可以,但(1,[2,3])则不可以【2,3】是可变的

* set集合中的添加用update() , 删除用remove()

list操作删除pop(), 添加append(), extend(), 删除remove()是删除元素e

dict操作添加dict[‘‘] = ‘‘, 删除pop

原文地址:https://www.cnblogs.com/HannahGreen/p/12128835.html

时间: 2024-08-03 07:16:47

python中的可变与不可变对象的区别的相关文章

Python中函数的参数传递与可变长参数

1.Python中也有像C++一样的默认缺省函数 1 def foo(text,num=0): 2 print text,num 3 4 foo("asd") #asd 0 5 foo("def",100) #def 100 定义有默认参数的函数时,这些默认值参数位置必须都在非默认值参数后面. 调用时提供默认值参数值时,使用提供的值,否则使用默认值. 2.Python可以根据参数名传参数 1 def foo(ip,port): 2 print "%s:%d

python中urllib, urllib2,urllib3, httplib,httplib2, request的区别

permike原文python中urllib, urllib2,urllib3, httplib,httplib2, request的区别 若只使用python3.X, 下面可以不看了, 记住有个urllib的库就行了 python2.X 有这些库名可用: urllib, urllib2, urllib3, httplib, httplib2, requests python3.X 有这些库名可用: urllib, urllib3, httplib2, requests 两者都有的urllib3

python中的引用传递,可变对象,不可变对象,list注意点

python中的引用传递 首先必须理解的是,python中一切的传递都是引用(地址),无论是赋值还是函数调用,不存在值传递. 可变对象和不可变对象 python变量保存的是对象的引用,这个引用指向堆内存里的对象,在堆中分配的对象分为两类,一类是可变对象,一类是不可变对象.不可变对象的内容不可改变,保证了数据的不可修改(安全,防止出错),同时可以使得在多线程读取的时候不需要加锁. 不可变对象(变量指向的内存的中的值不能够被改变) 当更改该对象时,由于所指向的内存中的值不可改变,所以会把原来的值复制

Python中使用help查看某一类对象的内置方法

Python中不同类型的对象有不同的方法,那么如何查看某一类型对象的方法?我们可以使用help()函数 用法help() ,括号中写对象的类型.比如查看数据类型的方法: help(int)  |  Methods defined here:  |    |  __abs__(...)  |      x.__abs__() <==> abs(x)  |    |  __add__(...)  |      x.__add__(y) <==> x+y  |    |  __and__

python中a+=a和a=a+a的区别

+= 是 + 的一种升级版本, 具有能把执行后的结果再写回传递来的变量本身的功能, 可变变量自身有比不可变变量多一个魔法方法 _iadd_, += 操作调用 _iadd_方法,没有该方法时,再尝试调用_add_方法, 不可变变量没有_iadd_方法 举例: # a += b >>> a1 = range(3) >>> a2 = a1 >>> a2 += [3] >>> a1 [0, 1, 2, 3] >>> a2 [

C++中栈和堆上建立对象的区别

在C++中类的对象建立分为两种,一种是静态建立,如A a:另一种是动态建立,如A* p=new A(),A*p=(A*)malloc():静态建立一个类对象,是由编译器为对象在栈空间中分配内存,通过直接移动栈顶指针挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象.动态建立类对象,是使用new运算符将对象建立在堆空间中,在栈中只保留了指向该对象的指针.栈是由编译器自动分配释放 ,存放函数的参数值,局部变量的值,对象的引用地址等.其操作方式类似于数据结构中的栈,通常都是被调用时处于存储

python中表达式赋值与链式赋值的区别

python支持普通赋值,链式赋值,增量赋值,但不支持表达式赋值. 普通赋值:x  =1 增量赋值:x = 1 ; x  += 1 链式赋值---同时对几个变量进行赋值,例子如下 >>> x = 1 >>> x = y = x + 1 >>> x,y (2, 2) 在其它语言,如C语言中,支持表达式赋值,就是说,表达式是有返回值的,例如x = 1;y = (x += 1)),那么x,y的值都是2,在python中,会发生什么情况呢? >>&

python中List append()、extend()和insert()的区别

Python中向列表增加更多数据时,有append().extend()和insert()等方法 其中最常用的是list.append(obj) 向列表的尾部添加一个新的元素. 需要一次性添加多个元素时可以使用list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) 示例及结果如下: 1 list = [1,2,3,4] 2 list.append([5,6,7]) 3 print(list) 4 list.extend([8,9,10]) 5 pri

Python中模块(Module)和包(Package)的区别

1. 模块(Module) 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Module). 使用模块有什么好处? 最大的好处是大大提高了代码的可维护性.其次,编写代码不必从零开始.当一个模块编写完毕,就可以被其他地方引用.我们在编写程序的时候,也经常引用其他模

python中的类方法、静态方法、对象方法

注:以下都是以公有为前提,私有方法只能在类内部调用,不需多讲. 1.对象方法 这种方法都有一个默认参数:self  这代表实例的这个对象 def __init__(self): print("初始化对象") 类是不能直接调用对象方法: class User(object): name = 'zs' def __init__(self): print("初始化对象") User.__init__() 这样调用抛出一个错误:TypeError: __init__() m