小新学习Python第八周 异常 模块 包

我们这周学习Python的的三个小点  异常 模块  包

目录

异常

异常和错误的不同

解决异常的方法

①容错代码:允许错误

②异常捕获

else 和 finally语句

主动抛出异常 raise

模块

什么是模块

导入的方法

一,全部的语句都要导入过来

二,导入部分模块的内容

__all__语句

__name__语句

 包


异常

异常和错误的不同

我们在写Python的过程中会出现很多错误和异常

因为我也对错误和异常的定义不太清楚,所以就参考了官网的解释

1. 错误

从软件方面来说,错误是语法或是逻辑上的。语法错误指示软件的结构上有错误,导致不能被解释器解释或编译器无法编译。这些错误必须在程序执行前纠正。当程序的语法正确后,剩下的就是逻辑错误了。逻辑错误可能是由于不完整或是不合法的输入所致;在其他情况下,还可能是逻辑无法生成,计算,或是输出结果需要的过程无法执行。这些错误通常分别被称为域错误和范围错误。

当 Python 检测到一个错误时,解释器就会指出当前流已经无法继续执行下去,这时候就出现了异常。

2. 异常

对异常的最好描述是: 它是因为程序出现了错误而在正常控制流以外采取的行为。这个行为又分为两个阶段: 首先是引起异常发生的错误,然后是检测(和采取可能的措施)阶段。

总的来说,我觉得错误就是在打代码的时候出现的一些语法错误,逻辑错误

                           异常是在执行程序的时候由于代码的错误而报错 

而异常也有很多的类型,举一些例子

TypeError   类型异常      1 + “2”

IndexError   索引异常      li = [1,2]     print(li[2])

keyEorror   键异常

解决异常的方法

解决异常的方法有很多种:

①容错代码:允许错误

def fund(x,y):
    if y != 0:
        return (x/y)
    return "除数不为零"
print(fund(2,1))

这里就是把y等于0这种异常给他考虑进去,这样就不会让程序报错

②异常捕获

def funa(x):
    print(1/x)
try:
    funa(0)
except Exception as e:
    print(e)

格式为:

try: 

   可能要出现异常的代码

except  异常的类型   若+as +异常的别名   相当于给异常的专业名字起别名

  print("要说的话  或者直接说别名,告诉别人的异常类型")

而后面可以接很多个except

要是不知道是什么类型的异常,则可以用上面代码写的 Exception 这个是万能异常

else 和 finally语句

else:不异常之后才会被执行的语句,跟在所有except后面

finally:无论异常与否都执行的语句,一定要放到最后,可以省略

主动抛出异常 raise

为什么要主动抛出异常呢?

举个例子

def funa(x):
    print(f"你年龄{x}岁")
funa(-18)

这种就是典型的逻辑错误

我们可以把这种逻辑错误当做异常,并可以自创这个异常,并报错

接着抛出异常,在外面用try except 来捕获异常

def funa(age):
    if age <= 0 or age >= 120:
        raise ValueError("值错误")
    else:
        print(f"你已经{age}岁了")


try:
    funa(-15)
except ValueError as e :
    print(e)

在raise语句中,是自己创造了一个异常

①若不要下面try except语句,且调用funa(-14),则在运行过程中会报错,即有红字出现

这是因为异常没有被捕获

②若有下面的try except语句,则会捕获异常,这样我们在try下面的funa()输入值后

则会开始运行funa的代码,当满足条件后就产生异常,然后被捕获

输出except语句下的代码,提醒值有问题。

所以当我们要运行的时候,代码都要写在try这个大框架下面

这样才能及时捕捉到错误,返回提醒语句,且不会中断下面程序的运行

模块

什么是模块

一些重复性的代码全部写到一个文件里,接着别人用一些代码调用你文件的一些代码

那这个文件就叫做模块

而Python也有自己的内置模块,可以用import语句导入即可

还有就是第三方模块,相当于玩游戏要下不同的mol,需要下载

自定义模块就是自己新建的一个py语句

接下来是

导入的方法

一,全部的语句都要导入过来

①import  模块名      (导入模块)

其中 import 可以理解为导入的意思

而 import  模块名  这句代码就包含了 模块名里面的代码

除非后面会引用模块名的变量

我在一个叫caogao1的文件里编写下面的程序:

a = 10
def funa(x):
    print("hello world")
    print(x)

而在caogao2的一个新建文件里编写下面的代码

import caogao1
print(caogao1.a)
print(caogao1.funa(2))

因此出来的结果就是

10
hello world
2

 说明可以调用其他文件的变量参数,和函数代码

全部导入的时候,要用导入的函数时,要在前面加   模块名.

②import  模块名  as  别名

这种就是给模块名一个别号,这是在模块名太长的时候就可以这么用,比较简便

这里就不多介绍

③import  模块名1  模块名2

即同时导入两个模块,这里也不多介绍

二,导入部分模块的内容

①from  模块名  import  函数名/变量名    (as   别名)

from 可以理解为从哪里的意思

在gaocao1文件的代码没变

在caogao2文件的代码变为

from caogao1 import a
print(a)

这个时候其他文件的变量就不用加   模块名.

②from 模块名  import*

这个时候就是和import一样,导入所有

__all__语句

在要被导入的文件里写

__all__ = ["a","fund"]

代表着我只能给别人展示这几个变量

这个可以保护隐私吧,具体怎么用我也不清楚

__name__语句

 要是在要被导入的文件打出

print(__name__)

会输出__main__,这就代表着你上面的代码是在当前文件运行

而要是导入文件后,就不会出现这种情况

所有可以在被导入的文件里输入

a = 10
def funa(x):
    print("hello world")
    print(x)
if __name__ == "__main__":
    print("这里的代码是在这个文件没被导出的情况下才执行的代码")

 包

相当于文件夹,比模块更高一级的存在

在pycharm里创建包

在new之后点击 python package ,这个时候就会自动生成一个__init__.py的文件

库>包>模块

硬盘>文件夹>文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值