包和模块
包:存在_init_.py文件的目录称为包,包的作用就是管理模块的
_init_.py模块一般都是存在于包下面,用来初始化包,这个模块中
可以正常的写代码初始化包
_all_变量用来申明该包有哪些模块,只有被他申明过的模块,
才可以使用 from 包名称 import * 这种方式导入
注意:包和普通目录的区别
模块:xx.py,注意用来保存代码
- 导包方式如下
import xxx
import xxx.xxx.xxx
import xxx.xxx.xxx as xx
from xx.xxx.xx import xxx
from xxx.xx import * 注意:这种必须源码支持,否则无法导入
is和==
is :判断是两个变量的内存地址
==:判断的是两个变量的值
注意:python的解析器中,存在一个小整形缓冲区,该缓冲区默认将(-5 ~ 256)的值提前加载到内存中,也就是说,如果我们定义变量,赋值的范围在-5~256内,则不会有第二个值,而是将缓冲区中该值引用赋给了该变量。
拷贝
-
引用传递:
-
浅拷贝
import copy 进行对象拷贝
#浅拷贝,只拷贝第一层
b=copy.copy(a)
3. 深拷贝
深拷贝,使用递归进行拷贝,完成之后,两个内存间,将没有任何关系
c=deep.copy(a)
- 注意
- 不可变数据类型(小整形数字,布尔值,字符串,元组),不管深浅拷贝,都只有一份
- list中的copy方法是浅拷贝,相当于copy.copy(a)