python基础语法【模块 包 异常捕获】

模块 包 异常捕获

1.模块

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

1.1 使用方法

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

1.2 导入模块

1.2.1 import 模块名

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

import demo

print(demo.str1)
print(demo.a)
demo.demo1()

1.2.2 from 模块名 import 内容1,内容2,…

导入指定模块,导入后可以直接使用指定内容;

from demo import str1, demo1

print(str1)
demo1()
# print(demo.a) 报错!

1.2.3 模块名 import *

导入指定模块,导入后可以直接使用模块中所有模块内容;

from demo import *
print(a)
print(str1)
demo.demo1()

1.2.4 import 模块名 as 新模块名

导入指定模块后对模块进行重命名:’新模块名.xxx‘;

import demo as d1

demo = 100
print(d1.a)
print(d1.str1)
d1.demo1()
print(demo)

1.2.5 from 模块名 import 内容1 as 新内容1

对导入的内容重命名;

str1 = 'abc'
from demo import str1, a

print(str1)  # 打印的是后面出现的

1.2.6 导入原理

每次导入模块的时候,不管是直接导入还是间接导入,系统会进入指定模块文件,将模块文件从头到尾执行一遍。

1.3 举例

先在项目下面创建一个test.py文件,输入以下代码(创建模拟下载电影的模块):

def download(name):
    print('+++++++++++++++=')
    print(f'{name}开始下载')
    print('检测网络状态')
    print('连接服务器')
    print('传输数据')
    print('接收数据')
    print('保存数据')
    print(f'{name}下载完成')


# 在这个if语句中的代码只会在执行当前模块的时候执行,在被别的模块导入的时候不会执行
if __name__ == '__main__':
    names = ['肖申克的救赎', '喜羊羊', '阿甘正传']
    for x in names:
        download(x)

导入模块,模拟下载变形金刚。

from test import download

download('变形金刚')

2.包

包含——init——.py文件的文件夹就是包。

2.1使用方法

2.1.1 import 包名

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

import files1

files1.f_test2()
print(files1.pi)
print(files1.a)
print(files1.b)

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

导入指定的模块,导入后可以通过”模块名.xxx“使用指定模块中的内容;

from files1 import test4,test2
print(test4.abc)
print(test2.abcd)

from files import test
print(test.money)

2.1.3 from 包名 import 内容1,内容2,…

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

import  files1.test2
print(files1.test2.abcd)

# 升级版

import  files1.test2 as t2
print(t2.abcd)

2.1.4 import 包名.模块名

导入指定包中的指定模块,导入后可以通过’包名.模块名.xxx’来使用指定模块中所有的全局变量;

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

导入包中的指定模块,导入后通过模块名.xxx使用对应的模块中的全局变量。

from files1 import  test2,test4
print(test4.abc)
test4.test4()
print(test2.abcd)
test2.test1()

3.异常

程序出现异常(报错)或直接让程序结束运行(在哪个位置出现的异常,程序就会在哪个地方结束)

print('+++++++++++')
# print('abc'[4])
print('---------')
print('+++++++++++')
'''
运行结果:
    print('abc'[4])
IndexError: string index out of range
+++++++++++
'''

3.1 异常捕获

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

3.1.1 语法结构1 —— 捕获所有的异常
try:
    代码段1(需要捕获异常的代码)
except:
    代码段2(出现异常后会执行的代码)
finally:
    代码段3(并不会影响异常捕获的运行,但是最后无论如何都会执行的代码)

XXXXX

执行过程:
先执行代码段1,执行代码段1的时候如果没有出现异常,就不执行代码段2;如果出现异常,程序不报错并且马上执行代码段2;

try:
    age = int(input('请输入年龄:'))
    print(age)
except:
    print("年龄输入有误!")
3.1.2 语法结构2(推荐使用)

捕获指定类型的异常(除了有指定的异常,可以查看出现的其他的异常)

try:
    代码段1(需要捕获异常的代码)
except 异常类型:
    代码段2(出现异常后会执行的代码)
finally:
    代码段3(并不会影响异常捕获的运行,但是最后无论如何都会执行的代码)
try:
    print('abc'[4])
except IndexError:
    print('出错!')  # 结果:出错!
3.1.3 语法结构3:
try:
    代码段1(需要捕获异常的代码)
except (异常类型1,异常类型2...):
    代码段2(出现异常后会执行的代码)
finally:
    代码段3(并不会影响异常捕获的运行,但是最后无论如何都会执行的代码)
try:
    print('abc'[4])
except (IndexError, KeyError):
    print('出错!')  # 结果:出错!
3.1.4 语法结构4:

同时捕获多种

try:
    代码段1
except 异常类型1:
    代码段11
except (异常类型2,异常类型22...):
    代码段22
except 异常类型3:
    代码段33
finally:
    代码段3(并不会影响异常捕获的运行,但是最后无论如何都会执行的代码)
try:
    print('abc'[4])
except IndexError:
    print('出错!')
finally:
    print('充当遗书作用')  # 出错!充当遗书作用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值