python的学习:导入模块路径、重新加载路径、 is ==、深拷贝和浅拷贝
来源:互联网 发布:网络交友的利弊 编辑:程序博客网 时间:2024/06/04 23:30
python导入模块路径、重新加载路径
#encoding=utf-8#import相当于C C++中的includeimport sysprint(sys.path)#引入当前的路径'''['E:\\language\\sublime\\python', 'D:\\Program Files\\python3.5\\python35.zip', 'D:\\Program Files\\python3.5\\DLLs', 'D:\\Program Files\\python3.5\\lib', 'D:\\Program Files\\python3.5', 'D:\\Program Files\\python3.5\\lib\\site-packages']'''#假如引用了里面的内容,则按照路径依次查找,若找到后停止查询,若当前未找到,则继续向#下查找,到最后找不到fail#若要添加一个路径,可以在path列表中添加sys.path.append("/home")print(sys.path)'''['E:\\language\\sublime\\python', 'D:\\Program Files\\python3.5\\python35.zip', 'D:\\Program Files\\python3.5\\DLLs', 'D:\\Program Files\\python3.5\\lib', 'D:\\Program Files\\python3.5', 'D:\\Program Files\\python3.5\\lib\\site-packages', '/home']'''#搜索的路径就是sys.path,可以通过修改这里来改变搜索的路径#../上一路径##对模块重新加载#若写了一个模块,import调用,在调用过程中,模块中的内容发生了改变#但是调用的内容不会发送改变,需要重新reloadimport importTestimportTest.testPrint()#在python3中进行了修改,在这里立刻发生了改变,但是在Linux平台上修改没有立刻发生改变from imp import *#导入reload,使用imp模块中的reloadreload(importTest)#重新加载修改的模块importTest.testPrint()
is和==的区别
#在python中避免发生循环调用#is ==的区别#==是判断两个对象是否相等 is 判断是否同一个引用#is比较两个引用是否指向了同一个对象(引用比较)a=[1,2,3]b=[1,2,3]c=aprint(id(a))#18222344print(id(b))#18219912print(id(c))#18222344print(a==b)#Trueprint(a==c)#Trueprint(a is b)#Falseprint(a is c)#True
浅拷贝和深拷贝、copy与deepcopy的区别
#浅拷贝是对于一个对象的顶层拷贝#即:拷贝了引用,并没有拷贝内容a=[1,2,3]d=[4,5,6]b=a #浅拷贝,a,b都指向同一块内存,只是将a的引用给了b,并没有将a的内容给b#a中的内容发生了改变,b跟着改变import copyc=copy.deepcopy(a)#深拷贝print(id(a))#10882312print(id(b))#10882312print(id(c))#18598536a.append(22)#print(a)#[1, 2, 3, 22]print(b)#[1, 2, 3, 22]print(c)#[1, 2, 3]#在一个列表中f=[a,d]g=fe=copy.deepcopy(f)#深拷贝拷贝了a,d的值h=copy.copy(f)#这个拷贝只拷贝了一层,另外拷贝了a,d的引用print(id(f))#18863048print(id(g))#18863048print(id(e))#18863560print(id(h))#18454344a.append(100)print(f)#[[1, 2, 3, 22, 100], [4, 5, 6]]print(g)#[[1, 2, 3, 22, 100], [4, 5, 6]]print(e)#[[1, 2, 3, 22], [4, 5, 6]]print(h)#[[1, 2, 3, 22, 100], [4, 5, 6]]
元组的copy,没有发生拷贝
#使用copy模块的copy功能时,会根据当前拷贝的数据类型是可变还是不可变类型有不同的处理方式#在一个元组中中a=[1,2,3]d=[4,5,6]f=(a,d)g=fe=copy.deepcopy(f)#深拷贝拷贝了a,d的值h=copy.copy(f)#因为元组的不可变性,在拷贝中先判断是否可变,这里没有发生拷贝 ,h指向fprint(id(f))#12081736print(id(g))#12081736print(id(e))#12081992print(id(h))#12081736a.append(100)print(f)#([1, 2, 3, 100], [4, 5, 6])print(g)#([1, 2, 3, 100], [4, 5, 6])print(e)#([1, 2, 3], [4, 5, 6])print(h)#([1, 2, 3, 100], [4, 5, 6])
阅读全文
0 0
- python的学习:导入模块路径、重新加载路径、 is ==、深拷贝和浅拷贝
- [Python]copy模块学习 -- 深拷贝和浅拷贝
- python 的深拷贝和浅拷贝
- Python的浅拷贝和深拷贝
- Python的浅拷贝和深拷贝
- Python的浅拷贝和深拷贝
- python的浅拷贝和深拷贝
- Python 的深拷贝 和 浅拷贝
- Python对象的拷贝,浅拷贝和深拷贝。
- python 包和模块 等于号(==)和is的区别与联系 对象的拷贝(copy)
- Python学习笔记之浅拷贝和深拷贝
- Python浅拷贝和和深拷贝
- python的引用和浅拷贝和p深拷贝
- 【python学习笔记】模块导入的搜索路径顺序是什么?
- Python深拷贝和浅拷贝
- python 浅拷贝和深拷贝
- python中的深拷贝和浅拷贝
- Python之深拷贝和浅拷贝
- vim的常用指令
- 单链表翻转
- ubutun下的一些使用小技巧
- Java通过JNI调用本地C/C++程序--常用示例
- Console MP3播放器 for C++
- python的学习:导入模块路径、重新加载路径、 is ==、深拷贝和浅拷贝
- 编译器和链接器
- mac os 配置 dock 栏图标显示/隐藏
- lintcode -- 带最小值操作的栈
- ClassPathXmlApplicationContext源码解析四
- 多重背包及优化
- 用vue构建项目笔记1(用vue脚手架创建项目)
- HDU2489 Minimal Ratio Tree 解题报告【图论】【Kruskal】【dfs】
- servlet之request和response报头处理