时间:2022-04-29 点击: 次 来源:网络 作者:佚名 - 小 + 大
33岁开始零基础学python第三方库公式大全创建表单型号规格
下载地址 https://share.weiyun.com/S11bpehi
资料目录 小甲鱼零基础学python视频全套96集 刘金玉零基础python入门到精通教程100集全套VIP精选 跟老齐学Python从入门到精通 电子工业出版社 深层的原因与Python存储的对象类型(在不少地方也用“数据类型”的说法,其实两者是一样的,“对象”和“数据”在Python中等同,不用区分)特点有关,Python只存储基本类型的数据,比如int、str,对于不是基础类型的,比如字典的值是列表,Python不会在被复制的那个对象中重新存储,而是用引用的方式,指向原来的值。通俗地说,Python在所执行的复制动作中,如果是基本类型的数据,就在内存中重新建个窝,如果不是基本类型的,就不新建窝了,而是用标签引用原来的窝。即如果比较简单,随便建立新窝即可;但是,如果对象太复杂了,就别费劲了,还是引用一下原来的省事。 所以,把用copy()实现的拷贝称之为“浅拷贝”(不仅Python,很多语言都有“浅拷贝”。顾名思义,没有解决深层次问题。言外之意,还有能够解决深层次问题的方法)。 与“浅拷贝”对应,在Python中,还有一个“深拷贝”(deep copy)。 不过,要用import导入一个模块。 >>> import copy >>> z = copy.deepcopy(x) >>> z {'lang': ['python', 'java'], 'name': 'qiwsir'} 用copy.deepcopy()深拷贝了一个新的副本,用id()来勘察一番: >>> id(x["lang"]) 3072243276L >>> id(z["lang"]) 3072245068L 果然是另外一个“窝”,不是引用了。如果按照这个结果,修改其中一个列表中的元素,应该就不影响另外一个了。 >>> x {'lang': ['python', 'java'], 'name': 'qiwsir'} >>> x["lang"].remove("java") >>> x {'lang': ['python'], 'name': 'qiwsir'} >>> z {'lang': ['python', 'java'], 'name': 'qiwsir'} 果然如此,再试试才过瘾呀。 >>> x["lang"].append("c++") >>> x {'lang': ['python', 'c++'], 'name': 'qiwsir'} 这就是所谓的浅拷贝和深拷贝。 has_key 这个函数的功能是判断字典中是否存在某个键。 has_key(...) D.has_key(k) -> True if D has a key k, else False 跟前一节中遇到的k in D类似。 >>> d2 {'web': 'itdiffer.com', 'name': 'qiwsir', 'song': 'I dreamed a dream'} >>> d2.has_key("web") True >>> "web" in d2 关于dict的函数似乎不少。不用着急,也不用担心记不住,因为根本不需要记忆,只要会用搜索即可。 |
上一篇:零基础学python2.3变量采集妹子图幼儿零基础学python真实经历
下一篇:没有了