001

1、==, is

== 用来判断值是否相等

is 用来判断二者是否指向了同一个东西

 

 学到 gc 的时候,你就知道为什么会出现下面这种情况

 

2、深拷贝和浅拷贝

浅拷贝:如果你把一个变量赋值给另外一个变量,没有把这个变量的值给它,而是把这个变量所指向的地址给它了。

 

由上例可以看出,python中大部分都是浅拷贝,要想实现深拷贝,需要借助 copy 模块。

 

 

 

3、copy模块的deepcopy方法

 

 e是一个数组,深拷贝自c,e变量本身拿的是c的值,数组e的每一个元素也是拿的值而不是引用。

深拷贝就是递归的取值而不是取地址。

深拷贝就是彻彻底底和源的所有断开联系但保持值一样。

 

4、copy模块的copy方法 

 

 deepcopy是,如果发现里面存的是引用,会把引用对应的值拷贝出来,不管有多少层都会重复这个操作。

 copy是,只会拷贝第一层的值,其他层都是拷贝引用。

 

 

 5、copy.copy 拷贝元组时的特点

 

copy方法虽然比deepcopy方法拷贝的深度浅,只拷贝第一层,那么c、e的id应该不一样才对啊?

因为元组有个特点,不可变,既然是不可变,拷贝多份没有意义。 

 

 6、import 搜索路径

 

 sys.path 是个列表,列表就应该支持 append

 

 7、重新导入模块

 

 

 

在我没有退出这个程序的情况下,别人修改了test模块

 

 

test模块已经修改了,但我之前的程序没有退出,我现在在这个程序里再调用一次这个模块的test方法

 

 

 期望显示打印1和2,但还是只打印1

 

程序在执行的过程中,即使导入的模块被修改了,但也获取不到最新模块的功能。

只要程序没有退出,即使你再 import 一次,还是只能使用旧模块的功能

除非reload

 

 

posted @ 2018-02-24 23:15  有山有水有鬼  阅读(200)  评论(0编辑  收藏  举报