异常-模块-包-Python

师从黑马程序员

异常的概念

异常演示

捕获异常的方法

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","黑马程序员")

若有侵权,请联系作者

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端小白如何理解mvc mvp mvvm

架构、框架、设计模式是都是啥? 架构:抽象出来不同组织或者对象亦或是简单组件,根据需求和各个单元的功能,进行组合排列。 从而完成系统的运行或者是实现目标。 框架:使用什么样的规则,什么样的开发语言&…

武汉星起航:各大企业力挺亚马逊,共筑跨境电商新生态

亚马逊电商平台作为全球领先的跨境电商巨头,一直以来都备受各大企业的青睐与支持。这些企业通过与亚马逊合作,共同拓展市场、提升品牌影响力,实现了互利共赢的局面。武汉星起航将浅析各大企业对亚马逊电商平台的支持,展现其共筑强…

项目亮点—动态线程池管理工具

问题 你是否在项目中使用线程池遇到过以下问题? 1.创建线程池核心参数不好评估,随着业务流量的波动,极有可能出现生产故障。 2.不支持优雅关闭,当项目关闭时,大量正在运行的线程池任务被丢弃。 3.不支持运行时监控…

你该选择哪个职业呢?数据科学家、数据分析师和数据工程师

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Taskflow:子流任务(Subflow Tasking)

创建Subflow DAG任务中,有一种常见的场景,一个任务可能在执行期间产生新的任务,然后紧接着执行新任务。 之前提到的静态图就没有办法实现这样一个功能了,所以Taskflow提供了另一种流的节点:Subflow,Subflo…

gpt 3d三角形 重心坐标填充 沿x轴炫赵师傅

go import pygame from pygame.locals import * import sys import math# 初始化Pygame pygame.init()# 设置窗口大小 width, height 800, 600 screen pygame.display.set_mode((width, height)) pygame.display.set_caption(3D Triangle Fill with Barycentric Coordinates)…

zabbix主动发现,注册及分布式监控

主动发现 结果 主动注册 结果 分布式监控 服务机:132 代理机:133 客户端:135 代理机 数据库赋权: 代理机配置 网页上配置代理 客户端配置 网页上配置主机 重启代理机服务 网页效果

写作类AI推荐(二)

本章要介绍的写作AI如下: 火山写作 主要功能: AI智能创作:告诉 AI 你想写什么,立即生成你理想中的文章AI智能改写:选中段落句子,可提升表达、修改语气、扩写、总结、缩写等文章内容优化:根据全文…

【LV16 day2 平台总线驱动开发---名称匹配】

一、总线、设备、驱动 硬编码式的驱动开发带来的问题: 垃圾代码太多结构不清晰一些统一设备功能难以支持开发效率低下 1.1 初期解决思路:设备和驱动分离 ​ struct device来表示一个具体设备,主要提供具体设备相关的资源(如寄…

sadtalker学习用于风格化音频驱动单图像说话人脸动画的真实 3D 运动系数的应用

论文出处 https://arxiv.org/abs/2211.12194 使用方法 1. 打开项目的colab链接 https://colab.research.google.com/github/Winfredy/SadTalker/blob/main/quick_demo.ipynb#scrollTofAjwGmKKYl_I 在examples/source_image文件夹中添加希望动起来说话的图片,这…

厦门攸信技术亮相新技术研讨会,展现物流自动化解决方案新高度!

今日,厦门攸信信息技术有限公司受邀参加了一场备受行业关注的电子制造高端盛会——一步步新技术研讨会,凭借卓越的智能制造与物流自动化技术在会议中大放异彩。作为一家引领行业发展的企业,厦门攸信技术不仅展示了其深厚的技术底蕴&#xff0…

java全排列(力扣Leetcode46)

全排列 力扣原题链接 问题描述 给定一个不含重复数字的数组 nums,返回其所有可能的全排列。你可以按任意顺序返回答案。 示例 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例 2…

路径规划——搜索算法详解(二):Floyd算法详解与MATLAB代码

上次总结了Dijkstra算法的案例原理与代码,本文分享第二种比较基础且易懂的方法为Floyd算法,该算法可以有效正确地处理有向图的最短路径问题,与Dijkstra算法不同,Floyd算法是一种动态规划算法,对于稠密图效果显著。原理…

从易到难,推荐9个适合练手的C++项目

老有一些同学和我说学习了 C 以后,想要做些项目锻炼自己,让我从「简单到难」都推荐一些。 那有啥说的,必须推荐!毕竟 C 的优质项目我见过太多了! 下面我就按照「从易到难」的梯度,依次来推荐,…

你真的会数据结构吗:二叉树

❀❀❀ 文章由不准备秃的大伟原创 ❀❀❀ ♪♪♪ 若有转载,请联系博主哦~ ♪♪♪ ❤❤❤ 致力学好编程的宝藏博主,代码兴国!❤❤❤ halo铁汁们,没错又是你们人见人爱,花见花开的大伟啊,今天也是周六&#x…

JHY-31复合电压继电器 额定电压Un=110VDC 板后接线 JOSEF约瑟

用途: JHY-31复合电压继电器使用于电力系统的继电保护线路中,作为各种类型故障的判别元件和电压闭锁元件。 继电器型号名称: 例:辅助直流工作电压为110V的复合电压继电器的订货代号为: JHY-31/110V。 工作原理: 继电器内部具有负…

OpenFeign 基本介绍

OpenFeign能干什么 前面在使用SpringCloud LoadBalancerRestTemplate时,利用RestTemplate对http请求的封装处理形成了一套模版化的调用方法。但是在实际开发中, 由于对服务依赖的调用可能不止一处,往往一个接口会被多处调用,所以…

浏览器工作原理与实践--垃圾回收:垃圾数据是如何自动回收的

在上一篇文章中,我们提到了JavaScript中的数据是如何存储的,并通过例子分析了原始数据类型是存储在栈空间中的,引用类型的数据是存储在堆空间中的。通过这种分配方式,我们解决了数据的内存分配的问题。 不过有些数据被使用之后&am…

Codeforces Round 850 (Div. 2) D. Letter Exchange

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e9, maxm 4e4 5; co…

拥抱挑战,开启增长:2024年全球产品团队的OKR策略

2024年&#xff0c;全球经济格局进入重塑阶段。消费者在消费选择上趋于严苛&#xff0c;企业需推出更具吸引力的产品与服务&#xff0c;以赢得消费者的青睐。同时&#xff0c;企业需通过持续创新&#xff0c;提升产品竞争力&#xff0c;方能在充满挑战的市场环境中实现持续增长…