python 包和模块 is和== 深拷贝和浅拷贝

14.python的高级编程

14.1 包和模块

什么是包?
存放模块的文件夹(文件夹不一定是包)
一个.py文件就是一个模块。这个文件的名字是:模块名.py。由此可见在python中,文件名和模块名的差别只是有没有后缀。有后缀是文件名,没有后缀是模块名。
每个文件(每个模块)都是一个独立的名称空间,也就是说可以在两个(多个)文件中出现同名的函数。
包的本质就是一个包含__init__.py文件的目录。是一种通过使用‘.模块名’来组织python模块名称空间的方式,也就是说在在导入包时遇到带 点 的,这就是关于包的导入语法。

导入包,本质上是导入了包中的__init__.py文件
在这里插入图片描述
常见的导包方式:
import package.moudle
import package.moudle as 别名
from package import moudle
from package1,package2,package3… import moudle
from package import *

14.2 is和==

都是用来判断变量
is 判断两个变量的内存地址
== 判断两个变量的值
在这里插入图片描述
python提供小整型缓存区(-5 ~ 256)在数据区
字符串缓存区(字符串不能包含特殊字符)
在这里插入图片描述在这里插入图片描述

14.3 深拷贝和浅拷贝

引用赋值 -----------数据存在栈里面的复制 =
浅拷贝
拷贝的对象,对象存在堆里
import copy
dir(copy)
[‘Error’, ‘all’, ‘builtins’, ‘cached’, ‘doc’, ‘file’, ‘loader’, ‘name’, ‘package’, ‘spec’, ‘copy_dispatch’,
‘copy_immutable’, ‘deepcopy_atomic’, ‘deepcopy_dict’, ‘deepcopy_dispatch’, ‘deepcopy_list’,
‘deepcopy_method’, ‘deepcopy_tuple’, ‘keep_alive’, ‘reconstruct’, ‘copy’, ‘deepcopy’, ‘dispatch_table’,
‘error’]
copy-------浅拷贝(只拷贝一层,内层发生改变,拷贝的对象也会发声改变)
deepcopy-------深拷贝
总结:当对象需要拷贝的时候,一般建议使用浅拷贝(只拷贝一层),如果要完全分离,使用深拷

拷贝可以用在在不可变类型(元组,字符串)
元组是不可变类型,元组里面的元素可变,如果再去拷贝?(思考)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值