10 深浅拷贝、异常、模板、包

1.深浅拷贝

在这里插入图片描述
在这里插入图片描述


# 1.浅拷贝:拷贝了最外层的对象,内部的元素只拷贝了一个引用。
# 引用:自动形成的从变量到对象的指针

# a = 1   # a是变量名,  = 赋值运算符    1是变量值
# print(a)
# print(id(a))   # id函数返回的是内存地址
# b = 2
# print(id(b))

import copy  # 导入模块
# li = [1, 2, [3, 4]]
# l2 = copy.copy(li)  # 浅拷贝
# li 和 l2是一个独立的对象,但是子对象指向了同一引用
# l2 = li.copy()
# print(li)
# print(l2)
# print(id(li))
# print(id(l2))
# 往外层列表中添加元素
# li.append('a')
# 往内层列表中添加元素
# li[2].append('a')
# print(li)
# print(l2)
# print(id(li[2]))
# print(id(l2[2]))
# 浅拷贝只会拷贝第一层,深层次的数据改变都会影响

# 2.深拷贝
# 深拷贝拷贝了对象的所有元素
a = [1, 2, [3, 4]]
b = copy.deepcopy(a)
# 深拷贝:a, b 是完全了拷贝了父对象和子对象,两者完全独立
print(id(a[2]))
print(id(b[2]))
# 往外层列表中添加元素
# a.append('b')
# 往内层列表中添加元素
a[2].append('b')
print(a)
print(b)

2.异常

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


 # 1.捕获异常
# 格式一:
# 举例一:
# try:
#     print(a)  # 被检测的代码
#
# # except:
# #     print('出现错误')
#
# except NameError as e:
#     print(e)    # 一旦检测到异常,就执行这里的代码

# 举例二: 捕获所有异常
# try:
#     a
# except Exception as e:  # 万能异常:Exception 可以捕获任意异常
#     print(e)

# 格式二
# else:没有异常时才会执行的代码
# dic = {'name': 'zs'}
# # print(dic['name2'])  # KeyError: 'name2'
# try:
#     print(dic['name'])
#
# except Exception:
#     print('出现错误')
#
# else:
#     print('没有捕获到异常')

# 格式三
# finally:无论是否有异常,都会执行的代码
# dic = {'name': 'zs'}
# try:
#     print(dic['name2'])
#
# except Exception:
#     print('出现错误')
#
# else:
#     print('没有捕获到异常')
# finally:
#     print('无论有没有异常,都执行')


# 2.异常的传递
# def funa():
#     inp = int(input('请输入整数:'))
#     return inp
#
# def funb():
#     print(funa())
#
# try:
#     funb()
# except Exception as e:
#     print('错误是:', e)

# 3.抛出异常
# 3.1 创建一个Exception('XXX')对象 , xxx为异常提示信息
# 3.2 raise抛出这个对象

# def funa():
#     raise Exception('抛出一个异常')  # raise后面的语句不会执行
#     # print(123)
# funa()

# 输入密码,判断密码长度不能小于六位
# def funb():
#     pwd = input('请输入密码:')
#     if len(pwd) >= 6:
#         return pwd
#     # 创建异常对象
#     ex = Exception('长度不够')
#     # 抛出异常对象
#     raise ex
#
# try:
#     print(funb())
# except Exception as e:
#     print('错误:', e)

3.模块

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


import random  # 导入模块

# import导入的模块分为这三个类别:
# 1.  .py文件
# 2.包好一组模块的包
# 3. 内置模块

# python中,模块分为三类
# 1.内置模块
# 2.第三方模块:通过pip install 库名 指令安装的模块
# 3.自定义模块


# 如果出现红色波浪线,可以正常执行
# as  起别名
# import test as t
# t.funa()

# 多个模块导入
# import random, copy, time  这种方式可以写不推荐
# import random
# import copy
# import time

# from 模块名 import  函数名1,函数名2....
# from test import *    # 把模块中的所有内容都导入进来
# from test import funa   # 导入部分
# funa()

# py文件:
# 1.脚本
# 2.模块

# 包:包含了__init__.py文件的文件夹

# __init__.py:是python中包的标识;可以编写python代码,但是尽量要保证它简单

from te import te2

4.包

在这里插入图片描述

# py文件:
# 1.脚本
# 2.模块

# 包:包含了__init__.py文件的文件夹

# __init__.py:是python中包的标识;可以编写python代码,但是尽量要保证它简单

from te import te2

test.py :

# import 模块  # 中文模块名可以,但不推荐

print('这是test.py')
a = 10
def funa():
    print('这是test模块')

# 正常情况下,如果模板被导入,里面的代码块会被执行;
# 加上if __name__ == '__main__',模块被导入的时候,它下面的代码块不会被执行

if __name__ == '__main__':  # python模拟的程序入口
    funa()
    print(123)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值