python第二十天

本文介绍了Python中的异常处理机制,包括try-except-finally的使用,并展示了自定义异常的创建。通过实例演示了如何在函数中结合return和finally关键字。同时,讲解了Python中的is和==的区别,以及小整型和字符串缓存区的概念。此外,还讨论了浅拷贝和深拷贝的差异及其在不可变类型中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自定义异常

** finally 关键字**
finally:必须要执行的代码(释放资源、释放内存)

try:
int(input("请你输入一个数字:"))
except Exception as e:
print("出现异常")
else:
print("没有出现异常")
finally:
print("无论有没有异常,都会打印")
print("剩余的代码")
def demo(msg):
try:
int(input(msg))
print("hello world")
return "A"
except Exception as e:
print("处理异常")
return "B"
finally:
print("释放资源")
return "C"
res = demo(input(">>>>>:"))
print(res)
#控制台输入123 会打印出什么?

函数中,如果return后面存在finally,那么代码并不会直接返回,而是需要执行finally,再执行返
回,所以finally会在return前执行
** 自定义异常**
需要创建一个类,需要继承异常的父类(BaseException Exception)

class MyException(Exception):
def __init__(self,msg):
Exception.__init__(self,msg)
def login(username,password):
if username == None or username.strip() == "":
#raise关键字 抛出异常
raise MyException("对不起,用户名不能为空")
if password == None or password.strip() == "":
raise MyException("对不起,密码不能为空")
if __name__ == '__main__':
# login(None,None)
try:
login("张三", None)
except Exception as e:
print("抓捕异常,异常是:",e)

python的高级编程

包和模块
什么是包?
存放模块的文件夹(文件夹不一定是包)
在这里插入图片描述
用来初始化文件
常见的导包方式:
import package.moudle
import package.moudle as 别名
from package import moudle
from package1,package2,package3… import moudle
from package import *
is和==
都是用来判断变量
is判断两个变量的内存地址
==判断两个变量的值
在这里插入图片描述
python提供小整型缓存区(-5 ~ 256)在数据区
字符串缓存区(字符串不能包含特殊字符)
深拷贝和浅拷贝
引用赋值 -----------数据存在栈里面的复制 =
浅拷贝
拷贝的对象,对象存在堆里
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、付费专栏及课程。

余额充值