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])







原创粉丝点击