异常-模块-包-Python

news2024/11/25 1:04:38

师从黑马程序员

异常的概念

异常演示

捕获异常的方法

try:
    f=open("D:/abc.txt","r",encoding="UTF-8")
except:
    print("出现异常了,因为文件不存在,我将open的模式,改为w模式去打开")
    f=open("D:/abc.txt","w",encoding="UTF-8")

捕获指定异常


#捕获指定异常
try:
    print(name)
except NameError as e:
    print("出现了变量未定义的异常")
    print(e)#记录异常的原因

捕获多个异常



try:
    print(name)
    1/0
except (NameError,ZeroDivisionError) as e:
    print("出现了变量未定义 或者 除以0的异常错误")

捕获所有异常



try:
    print(name)
    1/0
    f=open("D:/123.txt","r")
except Exception as e:
    print("出现异常")

异常else



try:
    print(name)
    1/0
    f=open("D:/123.txt","r")
except Exception as e:
    print("出现异常")
else:
    print("好高兴,没有异常")

异常的finally

try:
    print(name)
    1/0
    f=open("D:/123.txt","r",encoding="UTF-8")
except Exception as e:
    f = open("D:/123.txt", "w", encoding="UTF-8")
else:
    print("好高兴,没有异常")

finally:
    print("我是finally,有没有异常,我都要执行")
    f.close()

异常的传递

def func1():
    print("func1开始执行")
    num=1/0
    print("func1结束执行")

def func2():
    print("func2开始执行")
    func1()
    print("func2结束执行")

def main():
    try:
        func2()
    except Exception as e:
        print(f"出现异常了,异常的信息是:{e}")

main()

Python模块

模块的概念

模块的导入方式

import模块名

from模块名import功能名

from time import sleep
print("你好")
sleep(5)
print("我好")

from模块名import*

from time import *    #*表示全部的功能
print("你好")
sleep(5)
print("我好")

as定义别名

import time as t
print("你好")
t.sleep(5)
print("我好")
from time import sleep as sl
print("你好")
sl(5)
print("我好")

注:如果要导入模块,放在代码开头就可以

自定义模块

制作自定义模块

主函数代码

#方法1
# import my_module1
# my_module1.test(1,2)

#方法2
from my_module1 import test
test(1,2)
my_module1部分的代码
def test(a,b):
    print(a+b)

注意事项

当导入多个模块的时候,且模块内有同名函数,当调用这个同名函数的时候,调用的是后面导入的模块的功能

自定义模块功能测试

我们可以在自定义模块中直接调用其中的函数,但如果我们不想主代码在导入此模块时,输出我们测试时调用函数的结果我们可以将测试函数的代码放在

if __name__ == '__main__':(输入main再点击tab即可)

如:

def test(a,b):
    print(a+b)
if __name__ == '__main__':
    test(1,2)

_all_变量

__all__=["test_a"]
def test_a(a,b):
    print(a+b)
def test_b(a,b):
    print(a-b)

自定义包

Python包的概念

快速入门

导入包

方式一:

#导入自定义包中的模块
#方法1
import my_package.my_module1
import my_package.my_moudule2

my_package.my_module1.info_print()
my_package.my_moudule2.info_print2()


#方法2
from my_package import my_module1
from my_package import my_moudule2
my_module1.info_print()
my_moudule2.info_print2()

#方法3
from my_package.my_module1 import info_print
from my_package.my_moudule2 import info_print2
info_print()
info_print2()

my_module1代码

"""
演示自定义模块1
"""

def info_print():
    print("我是模块1的功能函数代码")

my_module2代码

"""
自定义模块2
"""
def info_print2():
    print("我是模块2的功能函数代码")

方法二:

__all__=["my_module1"]
from my_package import *
my_module1.info_print()
#my_module2.info_print2()报错

安装第三方包

第三方包的概念

安装第三方包-pip

pip的网络优化

Python异常、模块、包:综合案例

主代码

import my_utils.str_util
from my_utils import file_util

print(my_utils.str_util.str_reverse("黑马程序员"))
print(my_utils.str_util.substr("itheima",0,4))

file_util.append_to_file("D:/test_oppend.txt","itheima")
file_util.print_file_info("D:/test_append.txt")
str_util。py代码
"""
字符串相关的工具模块
"""
def str_reverse(s):
    """
    完成字符串的反转
    :param s:
    :return:
    """
    return s[::-1]

def substr(s,x,y):
    """
    给指定的下标完成给定字符串的切片
    :param s: 即将被切片的字符串
    :param x: 切片的开始下标
    :param y: 切片结束下标
    :return: 切片完成的字符串
    """
    return s[x:y]


# if __name__ == '__main__':
#     print(str_reverse("黑马程序员"))
#     print(substr("黑马程序员",1,3))
file_util.py代码
"""
文件处理相关的工具模块
"""
def print_file_info(file_name):
    """
    将给定路径的文件内容输出到控制台中
    :param file_name:即将读取的文件路径
    :return:None
    """

    f=None
    try:
        f=open(file_name,"r",encoding="UTF-8")
        content=f.read()
        print("文件的全部内容如下:")
        print(content)
    except Exception as e:
        print(f"程序出现异常了,原因是:{e}")
    finally:
        if f:
            f.close()



def append_to_file(file_name,data):
    """
    将指定的数据追加到指定的文件中
    :param file_name: 指定的文件路径
    :param data: 指定的数据
    :return: None
    """

# if __name__ == '__main__':
# #     print_file_info("D:/bill.txt")
#     append_to_file("D:/test_append.txt","黑马程序员")

若有侵权,请联系作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1565876.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

继阿里EMO后,腾讯也提出了AniPortrait:用于生成由音频和参考肖像图像驱动的高质量动画

腾讯提出了一种新颖的框架-AniPortrait,用于生成由音频和参考肖像图像驱动的高质量动画。通俗讲,就是给张照片生成说话的视频。类似阿里的EMO,大家先可以简单看下效果。 相关链接 论文:arxiv.org/abs/2403.17694 代码&#xff1a…

【技术访谈】与Babbage项目团队畅谈BSV区块链的新代码库

​​发表时间:2024年3月12日 BSV区块链协会近期宣布上线了JavaScript和TypeScript SDK,后者旨在为开发者提供先进的统一核心代码库,以便利开发者在BSV区块链上开发具备可扩展性的应用程序。 新上线的SDK替代了此前被广泛使用的、但已长期不再…

家用洗地机如何选?四款2024高性能洗地机力荐

家庭清洁是每个家庭都需要面对的日常任务,而一款高效、实用的洗地机能够极大地减轻我们的清洁负担。然而,在众多洗地机品牌和型号中选择一款适合自己的产品并不容易。本文将为您提供一份全面的洗地机选购指南,帮助您了解各种洗地机的特点和功…

el-form表单去除部分校验结果

需求说明 如图: 当点击右边的叉时, 需要删除这个输入框,删除这个输入框只需要一个变量就可以解决。 但使用v-show的方式去除这个输入框的时候,但下面的校验信息却没有消失 解决方法 找了半天,表单局部重置的方法&a…

收下这份地表最强参会指南,4月16日,玩转百度Create大会不迷路

欢迎来到英杰社区: https://bbs.csdn.net/topics/617804998 欢迎来到阿Q社区: https://bbs.csdn.net/topics/617897397 📕作者简介:热爱跑步的恒川,致力于C/C、Java、Python等多编程语言,热爱跑步&#xff…

windows qt打包保姆级教学

windows qt打包保姆级教学 简述打包打包进阶 简述 在windows下开发的qt程序,想在其他windows计算机上运行,而那个计算机没有qt环境,执行时候会报错各种dll找不到,那么就需要将自己开发的qt程序和用到的库打包。 打包 这里先编译…

Transformer的代码实现 day03(Positional Encoding)

Positional Encoding的理论部分 注意力机制是不含有位置信息,这也就表明:“我爱你”,“你爱我”这两者没有区别,而在现实世界中,这两者有区别。所以位置编码是在进行注意力计算之前,给输入加上一个位置信息…

真·面试题总结——JVM虚拟机

JVM虚拟机 JVM虚拟机规范与实现 JVM虚拟机规范 JVM虚拟机实现 JVM的常见实现 JVM虚拟机物理架构 JVM虚拟机的运转流程 JVM类加载过程 JVM类加载器及类加载器类型 JVM类加载器双亲委派机制 JVM运行时数据区的内存模型 JVM运行时数据区的内存模型:程序计数器…

使用OpenCV4.9的随机生成器和文本

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV 4.9基本绘图 下一篇:OpenCV系列文章目录(持续更新中......) 目标 在本教程中,您将学习如何: 使用随机数生…

Java中的可变字符串

Java中的可变字符串 一、什么是可变字符串二、可变字符串的使用场景以及使用步骤1.新建一个可变字符串2.可变字符串的一系列方法 一、什么是可变字符串 可变字符串是Java.lang包下的 在我们学习到JDBC的时候需要将原有的sql语句根据不同的差异添加一段新的关键字或者单词&…

C语言_第一轮笔记_指针

8.1 密码开锁 地址和指针 一般以变量所在的内存单元的第一个字节的地址作为他的地址NULL的值为0,代表空指针 指针变量的定义 类型名 *指针变量名类型名指定指针变量所指向变量的类型指针声明符*在定义指针变量时被使用,说明被定义的那个变量是指针指针变…

护眼台灯十大排名品牌有哪些?2024护眼台灯十大排名品牌推荐

在当今的教育环境中,学生们面临着相当沉重的学业压力。放学后,许多孩子便投入到无休止的作业之中,常常夜深人静时还未完成。作为家长,孩子的视力健康自然成为了我们心中的一块大石。夜间学习时,灯光的质量至关重要。标…

批量转换图片神器,支持tiff图片转换成png格式,图片高效转换

在数字图像处理领域,格式转换一直是关键且必要的环节。尤其对于设计师、摄影师、网站开发者等专业人士来说,能够快速、高效地将图片从一种格式转换为另一种格式,是提升工作效率和保障项目质量的关键。今天,我们荣幸地向您推荐一款…

低压配电室数字孪生实现区域内的无人值守

众所周知,电力设备的精益管控、精益检修与精益维护对于电网智慧化转型的重要性。因此数字孪生公司深圳华锐视点利用精湛的数字孪生、虚拟仿真、3D建模和图形图像技术,集成数据采集、监控预警、计划维护、数据分析、决策支持等核心模块,为电力…

从零开始构建gRPC的Go服务

介绍 Protocol Buffers and gRPC是用于定义通过网络有效通信的微服务的流行技术。许多公司在Go中构建gRPC微服务,发布了他们开发的框架,本文将从gRPC入门开始,一步一步构建一个gRPC服务。 背景 之前在B站看过一个gRPC教学视频,…

Linux进程控制(改)

Linux进程控制 进程 内核数据结构(struct task_struct,struct mm_struct,页表) 代码和数据 在Linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程 1.进程创建 ./程序fork&am…

GPS坐标转换为百度地图坐标并显示到百度地图上

百度地图有个坐标识取系统:https://api.map.baidu.com/lbsapi/getpoint/index.html,打开链接如下: 如上图,可以搜索某一个位置,然后会出现该位置的许多选择,选择一个就会显示出对应的百度地图的坐标&#x…

抖音小店正确的起店方法是什么?别再闭门造车了,快来学习!

大家好,我是电商糖果 随着抖音卖货的火爆的,开抖音小店的商家也越来越多。 很多没有电商经验的朋友就发现,想要起店非常难。 有的好一两个月了,都不出单。 糖果做抖音小店有四年时间了,也经营了多家小店。 这里就…

从零开始:如何进入IT行业

微信扫码体验我自己做的小程序(很有意思哦~~【坏笑】): 随着科技的飞速发展,IT行业已经成为了许多人梦寐以求的职业之一。不过,对于那些没有任何相关经验或技能的人来说,进入这个领域…

坦克大战_java源码_swing界面_带毕业论文

一. 演示视频 坦克大战_java源码_swing界面_带毕业论文 二. 实现步骤 完整项目获取 https://githubs.xyz/y22.html 部分截图 启动类是 TankClinet.java,内置碰撞检测算法,线程,安全集合,一切皆对象思想等,是java进阶…