首页 > 编程语言 >十天学会python——第7天:异常与模块

十天学会python——第7天:异常与模块

时间:2024-07-18 20:29:54浏览次数:19  
标签:__ python except try 十天 模块 print 异常

1 异常

1.1 认识异常

异常语法

try:
    可能发生错误的代码
except:
    如果出现异常执行的代码
try:
    f = open('test.txt','r')
except:
    f = open('test.txt','w')

捕获异常

try:
    可能发生错误的代码
except 异常类型:
    如果捕获到异常执行的代码
try:
    print(num)
except NameError:	# NameError,这是一个异常类型
    print('出现错误')

注意:

  • 如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常
  • 一般try下方只放一行尝试执行的代码

捕获多个指定异常:

try:
    print(1/0)
except (NameError,ZeroDivisionError):	# NameError,ZeroDivisionError,都是异常类型
    print('出现错误')

捕获异常描述信息:

try:
    print(num)
except (NameError,ZeroDivisionError) as result:
    print(rsult)

捕获所有异常:

try:
    print(num)
except Exception as result:
    print(rsult)
  • 注意:Exception 是所有程序异常类的父类

1.2 异常的else与finally

else:表示的是没有异常的时候执行的代码

try:
    print(num)
except Exception as result:
    print(rsult)
else:
    print('没有异常啦')

finally:无论是否发生异常都要执行的代码

try:
    print(num)
except Exception as result:
    print(rsult)
else:
    print('没有异常啦')
finally:
    f.close()

1.3 异常的传递

技巧py文件的打开方法—在文件目录下敲 cmd 回车,在弹出的窗口执行(python3 文件名,注意Tab可以补全文件名)

import time
try:
    f = open('test.txt')
    try:
    	while True:
            content = f.readline()
            if len(cntent) == 0:
                break
            time.sleep(2)	# 时间休眠函数
            print('content')
	except:	# 如果文件在读取过程中产生了异常,那么就会被捕获到
    	print('意外终止了读取数据')
	finally:
    	f.close()
		print('文件已关闭')
except:
    print('没有这个文件')

1.4 自定义异常

自定义异常:将不满足要求的代码捕获,自定义异常类

raise:抛出自定义异常类

# 自定义异常,继承Exception
class ShortInputError(Exception):
    def __init__(self,length,min_len):
        self.length = length
        self.min_len = min_len
    # 设置抛出异常的描述信息
    def __str__(self):
        return f'您输入的密码长度是{self.length},不能少于{self.min_len}个字符'
def main():
    try:
        con = input('请输入密码:')
        if len(con) < 3:
            raise ShortInputError(len(con),3)
        except Exception as result:
            print(result)
        else:
            print('密码已输入完成!')

2 模块与包

2.1 模块

模块:一个Python文件,包含了Python对象定义和Python语句,模块定义函数,类和变量

导入模块的方式:

  • import 模块名
  • from 模块名 import 功能名
  • from 模块名 import * ,这里的 * 指代的是所有
  • from 模块名 as 别名
  • from 模块名 import 功能名 as 别名

制作模块

__name__:系统变量,是模块的标识符,值是:如果是自身模块值是__main__,否则是当前模块的名字

模块定位顺序:当前目录——shell变量PYTHONPATH下的每个目录

# 定义模块,新建一个Python文件(my_model),并定义testA函数
def testA(a,b):
    print(a + b)
# 测试模块
if __name__ = '__main__':
    testA(1,1)		# 在其他模块调用的话,这里不会被执行
# 调用模块
import my_model
testA(2,2)

__all__:如果一个模块文件中有__all__变量,当使用from xxx import * 导入时,只能导入这个列表的元素

__all__ = ['testA']		# 后续只能调用此模块的testA
def testA():
    return A
def testB():
    return B

2.2 包

:将有联系的模块组织放在同一文件夹下,并在文件夹中创建名为__init__.py的文件,这个文件夹就是包

制作包

[New] – [Python Package] – 输入包名 - -[OK]-- 新建功能模块(有联系的模块)。

注意:

1 新建包后,包内部会自动创建__init__.py 文件,这个文件控制着包的导入行为。

2 必须在__init__.py文件中添加__all__ = [ ],控制允许导入的模块列表

# 定义模块,新建一个Python文件(my_model),并定义testA函数
def testA(a,b):
    print(a + b)
# 测试模块
if __name__ = '__main__':
    testA(1,1)		# 在其他模块调用的话,这里不会被执行
# 调用模块
import my_model
testA(2,2)

导入包

导入:import 包名.模块名

调用:包名.模块名.目标

标签:__,python,except,try,十天,模块,print,异常
From: https://blog.csdn.net/RunningJie/article/details/140506493

相关文章

  • 决策树模型构建+调参Python代码——用决策树模型实现机器学习
    一、决策树模型简介1.1适用范围决策树模型(DecisionTree)可以用于分类和回归任务,广泛应用于以下领域:客户细分信用风险评估医疗诊断营销策略优化1.2原理决策树是一种树形结构的预测模型,通过一系列的特征测试(即节点的分裂)将数据集逐步划分,从而形成一个树状的决策路径。每个节......
  • Python学习之推导式
    目录一、列表推导式二、集合推导式三、字典推导式四、元组推导式一、列表推导式[expressionforiteminiterableifcondition]介绍:(1)expression:生成元素的表达式。(2)item:可迭代对象中的每个元素。(3)iterable:可迭代对象,如列表、元组、字符串等。(4)condition(可选):筛选......
  • python gradio 的输出展示组件
    HTML:展示HTML内容,适用于富文本或网页布局。JSON:以JSON格式展示数据,便于查看结构化数据。KeyValues:以键值对形式展示数据。Label:展示文本标签,适用于简单的文本输出。Markdown:支持Markdown格式的文本展示。Plot:展示图表,如matplotlib生成的图表。Text:用于显示文本,适合较长的输出。......
  • 基于Python语言的入门算法和数据结构(持续更新中,求关注一波)[链表 栈 队列 复杂度 操作]
    这篇文章主要是讲的Python语言的算法,本人还在不断记笔记中,文章也会持续更新,内容比较浅薄,请大家指教另外推荐一个比较好用的记笔记的软件Typora,自己已经使用很久了,感觉不错。。。虽然但是还是有欠缺。目录第一章算法概述1.1什么是数据结构?01数据结构都有哪些组成方式02......
  • YARA:第十三章-编写定制化模块
        目录1. 模块模板2.模块集成3.声明部分(Declarationsection)3.1基础类型(Basictypes)3.2结构(Structures)3.3 数组(Arrays)3.4字典(Dictionaries)3.5方法(Function)4.初始化和退出函数(Initialization and finalization)5.加载函数和退出加载函数(Loadand......
  • 无法在 Rasp pi 4B 上安装 python 库
    :~$sudopipinstall序列号错误:外部管理环境×该环境是外部管理的╰─>要在系统范围内安装Python软件包,请尝试aptinstallpython3-xyz,其中xyz是您要尝试的包安装。Ifyouwishtoinstallanon-Debian-packagedPythonpackage,createavirtualenvironme......
  • 【YOLOv8改进 - 特征融合NECK】SDI:多层次特征融合模块,替换contact操作
    YOLOv8目标检测创新改进与实战案例专栏专栏目录:YOLOv8有效改进系列及项目实战目录包含卷积,主干注意力,检测头等创新机制以及各种目标检测分割项目实战案例专栏链接:YOLOv8基础解析+创新改进+实战案例介绍摘要在本文中,我们介绍了U-Netv2,一种用于医学图像分割......
  • python学习之---迭代器与生成器
    什么是迭代器可迭代对象:可以通过for循环来实现遍历,例如list、string、dict迭代器:不仅可以使用for循环,还可以使用next()方法、__iter__()next():获取容器中的下一个元素,当容器中没有可访问的元素后,next()方法将会抛出一个StopIteration异常终止迭代器iter():内建函数获取......
  • Python web自动化爬虫-selenium/处理验证码/Xpath
    #coding:utf-8importtimeimportrandomfromtimeimportsleepfromcsvimportwriterfromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromchaojiyingimportChaojiying_Clientfromselenium.webdriverimportActionChainsdriver......
  • 【Python】通过Cython提升性能
    一、什么是Cython,如果你了解Python,就会知道Python相比于其他语言,性能差了不是一点半点。但是Python的底层实现大量使用了C语言,可以与C语言很好的结合。并且在Python中由于GIL全局解释器锁的机制,导致python在实现CPU密集型操作时非常吃力。Cython是Python的一个扩展,用于将Python代......