一、模块导入
1. 模块导入路径
使用 import xxx 时,有时候会遇到 “No module named ‘xxx‘",找这个模块的路径,可以通过 sys.path 查看,增加路径的方法同在 list 中增加一个变量,例如增加当前路径: sys.path.append(‘../‘)
2. 重新导入
如果导入的模块已经修复了,需要重新导入才能获取到最新的内容,使用 reload() 方法可以实现,但这个方法是在 imp 模块,也需要导入才能用: from imp import *
3. 循环导入
互相调用,导致死循环
二、== & is
== 是用来判断两边值是否相同,is 用来判断两边是否指向同一个地方
a = 1000, b=1000, 此时 "a is b" 返回 False,但是在一个范围内数值是一致的
三、深拷贝、浅拷贝
浅拷贝:把某个变量指向的地址赋值给另一个变量
深拷贝:变量指向一个地址,深拷贝就是创造一份一样的数据,指向另一个地址
import copy a = [11,22,33] b = copy.deepcopy(a) print(id(a)) print(id(b))
可以看到指向的内存地址不同
a = [11,2,3] b = [4,5,6] c = [a,b]
此时 c 指向的是 a 和 b 的引用
d 深拷贝 c 时,发现 c 的内容也是引用,深拷贝会重新拷贝一份引用的内容
copy 模块中的另一个方法 copy.copy() ,拷贝的是引用时,重新指向了一个内存地址,但指向的内容不变(但对于不可变类型来说,这个方法不创建新的内存地址,还是指向原来的地址)
原文:https://www.cnblogs.com/april-aaa/p/13289507.html