【总结】模块、包和异常捕获

模块、包和异常捕获

1. 模块

1.1 导入原理(模块、包)

  • 导入模块的时候系统就会进入指定模块,将模块中的代码全部执行一遍。
 import text         # 打印开始 打印结束

1.2 if name == ‘main

  • 在这个if语句中的代码只会在直接执行当前模块的时候执行,在被别的模块导入的时候不会执行

text1.py

 # text1.py
 def download(name):
     print('--------------------')
     print(f'{name}开始下载')
     print('监测网络状态')
     print('连接服务器')
     print('传输数据')
     print('接收数据')
     print(f'{name}下载成功')
 
 # 在这个if语句中的代码只会在直接执行当前模块的时候执行,在被别的模块导入的时候不会执行
 if __name__ == '__main__':
     names = ['肖生克的救赎', '霸王别姬', '变形金刚', '蜘蛛侠', '钢铁侠', '阿甘正传']
     for x in names:
         download(x)

在导入该模块时:

from text1 import download
download('变形金刚')

请添加图片描述

在加入if name == ‘main’:前运行该代码会全部执行(全部下载)

在加入’if name == ‘main’:‘后,只会执行变形金刚

1.2 什么是模块

  • python一个文件就是一个模块

1.3 怎么在一个模块中使用另外一个模块的内容

1)前提:如果想要在一个模块中使用另外一个模块中的内容,被使用的模块的模块名必须符合变量名的要求。

2)导入模块:

  • import 模块名 - 导入指定模块,导入后可以通过模块名.xxx的方式使用这个模块中所有的内容

  • from 模块名 import 内容1, 内容2, … - 导入指定模块,导入后可以直接使用指定内容。

  • from 模块名 import * - 导入指定模块,导入后可以直接使用模块中全部内容

  • import 模块名 as 新模块名 - 导入指定模块后对模块进行重命名,在使用时需要用新模块名

  • from 模块名 import 内容1 as 新内容1 - 对导入内容重命名

# ------------- a.导入方式1 ------------------
import text

print(text.a)
print(text.name)
text.f_test()
# ------------ b.导入方法2 --------------------
from text import a, f_test

print(a)
f_test()
print(name)   # 没有导入,不能使用
# ------------ c.导入方法3 --------------------
from text import *
print(a)
print(name)
f_test()
------------ d.导入方法4 --------------------
import text as t1

text = 1000
print(t1.a)
print(t1.name)
t1.f_test()
# ------------ e.导入方法4 --------------------
name = '小花'
from text import name, a

print(name)   # 小明

print('---------------------------华丽分割线-----------------------------')

from text import name, a
name = '小花'

print(name)     # 小花
print('---------------------------华丽分割线-----------------------------')
from text import name as name1
name = '小花'
print(name)
print(name1)

2. 包

2.1 什么是包

包含__init__.py年的文件夹就是包

请添加图片描述

2.2 怎么使用包或者文件夹中模块的内容

1)import 包名 :

只适用于包)导入指定的包,导入后可以已通过包名.xxx去使用包中__init__.py文件中所有内容

# ------------------------ 导入方式1 ---------------------------
import  files2
files2.f_test2()    # 包中__init__中函数
print(files2.pi)    # 3.14

2)from 包名 import 模块1, 模块2, …

导入指定包中指定模块,导入后可以通过’模块名.xxx’使用指定模块中内容

# ------------------------ 导入方式2 ---------------------------
from files2 import test2, test4
print(test2.msg)
print(test4.a)


from files import test1
print(test1.money)

3)from 包名 import 内容1, 内容2, …

(只适用于包)导入指定包中__init__.py文件中指定内容

from files2 import test2, pi, f_test2

print(pi)
print(f_test2())

4)import 包名.模块名

# ------------------------ 导入方式4 ---------------------------
import files2.test2 as t2
print(t2.msg)

5)from 包名.模块名 import 内容1, 内容2, …

# ------------------------ 导入方式5 ---------------------------

from files2.test2 import msg
print(msg)

from files2.abc import test3
print(test3.demo)

3. 异常捕获

3.1 异常

指程序中的错误

程序出现异常会直接让程序结束运行,在哪个位置出现异常,程序会在那个地方结束

print('+++++')
print('abc'[4])       # 程序在这里结束
print('-----')
print('=====')

3.2 异常捕获

  • 让程序在出现异常的时候程序不结束还可以接着往后执行

1)语法结构1 - 捕获所有异常

try:
    代码段1(需要捕获异常的代码)
except:
    代码段2(出现异常后执行的代码)
finally:
    代码段3(最后无论如何都会执行)
  • 执行过程:先执行代码段1,执行段代码段1的时候如果没有出现异常就不执行代码段2,若有finally会执行finally代码段;如果出现异常 ,程序不报错,马上执行代码段2,且若有finally还会进入finally。
try:
    age = int(input('请输入年龄:'))
    print(age)
except:
    print('年龄输入有误!')
    
# 当年龄输入无法转换成整型时,如18h,就不会报错会进入except的代码段打印年龄输入有误!

2)语法结构2 - 捕获指定类型异常

try:
    代码段1(需要捕获异常的代码)
except 异常类型:
    代码段2(出现异常类型后执行的代码)
finally:
    代码段3(最后无论如何都会执行)

  • 出现异常但不属于异常类型,没有被捕获到,依旧会执行finally
try:
    age = int(input('请输入年龄:'))
    print(age)
except ValueError:
    print('年龄输入有误!')
finally:
    print('!!')
  • 当年龄输入无法转换成整型时,如果是valueError的错误类型,就进入except的代码段打印年龄输入有误!,并且还要运行finally的代码段,如果不是valueError的错误类型,会报错,若是有finally,会运行finally的代码段后再报错。

3)语法结构3 - 同时捕获多种异常

try:
    代码段1(需要捕获异常的代码)
except (异常类型1, 异常类型2, ...):
    代码段2(出现异常后执行的代码)
finally:
    代码段3
try:
    name = input('请输入姓名:')
    name_1 = name[3]
    print(name_1)
except (IndexError, KeyError):
    print('年龄输入有误!')

4)语法结构4 - 根据不同异常处理不同

try:
    代码段1(需要捕获异常的代码)
except 异常类型1:
    代码段11
except (异常类型2,异常捕获22, ...):
    代码段22
except 异常类型3:
    代码段33
...
finally:
    代码段3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值