python学习笔记,day4

本文介绍了Python中的浅拷贝和深拷贝概念,通过示例展示了它们的区别。同时,讨论了模块的使用,强调了模块化编程带来的好处,如代码复用、可维护性和防止命名冲突。此外,还阐述了如何导入和使用模块,以及如何以主程序方式运行Python脚本。最后,提到了Python中的包结构及其在组织代码和避免名称冲突方面的作用。
摘要由CSDN通过智能技术生成

1、类的浅拷贝与深拷贝

变量的赋值操作:只是形成两个变量,实际上还是指向同一个对象

浅拷贝:python拷贝一般都是浅拷贝,拷贝时,对象包含的子对象内容不拷贝,因此,源对象与拷贝对象会引用同一个子对象

深拷贝:使用copy模板的deepcopy函数,递归拷贝对象中包含的子对象,源对象和拷贝对象所有的子对象也不相同

eg:

class Cpu:
    pass
class Disk:
    pass
class Computer:
    def __init__(self,cpu,disk):
        self.cpu=cpu
        self.disk=disk
#变量的赋值
cpu1=Cpu()
cpu2=cpu1

print(cpu1,id(cpu1))
print(cpu2,id(cpu2))
print('------------------------')
disk1=Disk()
print(disk1,id(disk1))
computer1=Computer(cpu1,disk1)
print(computer1,computer1.cpu,computer1.disk)
import  copy
computer2=copy.copy(computer1)
print(computer2,computer2.cpu,computer2.disk)
print('------------深拷贝------------')
computer3=copy.deepcopy(computer1)
print(computer3,computer3.cpu,computer3.disk)

浅拷贝只换id,深拷贝全部都换

2、模块(modules)

函数与模块的关系:一个模块中可以包含N多个函数

一个扩展名为.py的文件就是一个模块

使用模块的好处:

方便其他程序和脚本的导入并使用;

避免函数名和变量名冲突;

提高代码的可维护性;

提高代码的可重用性

3、模块的导入

创建模块:新建.py文件,名称尽量不要与python自带的标准模块名称相同

导入模块:

import  模块名称  [as别名]

from   模块名称  import    函数/变量/类

eg:

calc.py

def add(a,b):
    return (a+b)
def div(a,b):
    return (a/b)

demo.py

import calc
print(calc.add(10,30))

4、以主程序方式运行

在每个模块的定义中都包括一个记录模块名称的变量__name__,程序可以检查该变量,以确定他们在哪个模块中执行,如果一个模块不是被导入到其他程序中执行,那么它可能在解释器的顶级模块中执行,顶级模块的__name__变量的值为__main__

if __name__='__main__':

       pass

5、python中的包

包是一个分层次的目录结构,它将一组功能相近的模块组织在一个目录下

作用:代码规范,避免模块名称冲突

包与目录的区别:

包含__init__.py文件的目录称为包;目录里通常不包含__init__.py文件

包的导入:import 包名.模块名

import只可以导入包和模块,但from..import...可以导入包,模块,变量名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值