数据分析 --- day14模块与异常

一、模块

1. 什么是模块

什么是模块: python中一个py文件就是一个模块

2. 如何在一个模块中去使用另一个模块中的内容

  1. 使用前提:
    • 需要被别的模块使用的模块的模块名必须符合变量名的要求
    • 导入模块 - 模块里面的内容必须先要导入再使用

3.怎么导入模块

  • import 模块名

    导入指定模块,导入后可以通过’模块名.xxx’的方式使用这个模块中的全局变量

  • form 模块名 import 变量1,变量2,变量3…

    导入指定模块,导入后可以直接使用指定的变量

  • **from 模块名 import ***

    导入指定模块,导入后可以直接使用模块中所有的全局变量

  • import 模块名 as 新模块名

    对模块重命名

  • from 模块名 import 变量1 as 新变量1, 变量2 as 新变量2,变量3…

    对模块中变量重命名

导入方式1

# import test1

#

# print(test1.a)

# test1.func1()

导入方式2

# from test1 import a,func1

# print(a)

# func1()

# print(name)             # 报错

导入方式3

# from test1 import *

# print(a)

# print(name)

# func1()

导入方式4

# from test1 import t1

# print(a)

# print(name)

# func1()

导入方式5

from test1 import name as names,a
print(a)
print(names)

二、导入模块的原理

1.导入原理

  • 不管是import还是from-import导入模块的时候,系统都会自动进入指定的模块,将模块中的所有的代码都执行一遍

新建test1文档 :

print('=========star1============')

a = 100

name = '小明'

def func1():
    print('test1中的函数')


print('=========end1============')
  • 运行导入的模块,看模块中需要打印的东西是否从头到尾都打印出来
import test1   
  • 也会将指定模块中的代码全部执行一遍
from test1 import a    

2. 阻止导入

目的: 导入模块的时候,不让模块中的所有代码都执行,只执行需要执行的部分
组织方法: 在被导入的模块中添加main对应的if语句,把不希望被别的模块执行的代码放到if语句里面

from test2 import download

download('肖生克的救赎')

注意:同一个模块如果导入多次,模块中的代码只会执行一次(自动查重)

import test1
import test1

if __name__ == '__main__':          # 直接输main就欧克
    pass

三、包

新建test2文档:

def download(name):
    print(f'连接{name}电影对应的服务器')
    print("服务器传输数据")
    print('客户端接收数据')
    print(f'保存{name}数据')
    print('======================')


# 这个if语句里面的代码在被别的模块导入的时候不执行
if __name__ == '__main__':
    for i in range(100):
        print(download(i))

1.什么是包

python中将包好了__int__.py文件的文件夹叫做包,他是专门来管理模块的。

2.怎么使用包中的模块中的内容

  1. import 包名

    直接导入包,导入后可以用’包名.xxx’去使用包中__int__.py文件中所有的全局变量

  2. import 包名.模块名

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

  3. from 包名 import 模块名1,模块名2…

  4. from 包名.模块名 import 变量1,变量2…

导入方式1

# import file2

# print(file2.a)

# print(file2.B)

导入方式2

# import file2.test3

# print(file2.test3.name)

# print(file2.test3.age)

# import file2.test3 as test3

# print(test3.name)

# print(test3.age)

# print(test3.list1)

导入方式3

# from file2 import test3

# print(test3.name)

# print(test3.age)

导入方式4

from file2.test3 import name,list1
print(name)

# print(age)          # 报错

print(list1)

四、异常捕获

1.异常

异常就是程序执行过程中报的错就是异常

如果程序执行过程中出现了异常。程序会崩溃,不会执行后面的代码

示例: 下边只会打印=、+的两句代码

print('=======')
print('+++++++')
print('abc'[5])
print('-------')

2.异常捕获

异常捕获是让程序在出现异常的时候不崩溃,还能接着往后执行

  • 异常捕获的场景

    程序员知道某个地方可能出现异常(出现异常的原因不是代码本身的问题,而是使用者操作不当等原因),但又希望在出现异常的时候程序不崩溃,还可以接着往后执行,这个时候才能进行异常捕获。

  • 异常捕获的语法结构:

    • 捕获任何类型异常

      try:
          代码段1(需要捕获异常的代码)
      except:
          代码段2(捕获异常后会执行的代码)
      

      执行过程: 先执行代码段1,如果代码段1出现异常,不会报错,而是会马上执行代码段2;如果代码段1没有出现异常,那代码段2不执行

      示例

      try:
          age = int(input('请输入年龄:'))
          if age < 18:
              print('未成年')
          else:
              print('成年')
      except:
          print('输入年龄有误')
      
      print('******')
      
    • 捕获特定类型异常

      try:
          代码段1(需要捕获异常的代码)
      except 异常类型:
          代码段2(捕获异常后会执行的代码)
      

      示例

      try:
          age = int(input('请输入年龄: '))
          if age >= 18:
              print('成年')
          else:
              print('未成年')
          print(str(age)+'岁')
      except ValueError:
          print('年龄输入有误!')
      
    • 可以同时捕获多种异常,增对不同异常,做相同处理

      try:
          代码段1(需要捕获异常的代码)
      except 异常类型(异常类型1,异常类型2...):
          代码段2(捕获异常后会执行的代码)
      
    • 可以同时捕获多种异常,增对不同异常,不相同处理

      try:
          代码段1
      except 异常类型1:
          代码段11(捕获异常后会执行的代码)
      except 异常类型2:
          代码段22(捕获异常后会执行的代码)
      except 异常类型1:
          代码段33(捕获异常后会执行的代码)
      ....
      

3. 异常捕获完整结构

语法:

try:
    代码段1 (需要捕获异常的代码)
except:
    代码段2 (捕获到异常后会执行的代码)
else:
    代码段3 (没有出现异常会执行的代码)
finally:
    代码段4 (无论有没有出现异常也不管异常有没有捕获到,都会执行 - 无论什么情况都会执行)

示例

try:
    print('abc'[4])
except IndexError:
    print('出现异常')
else:
    print('没出现异常')
finally:
    print('都会执行')

五、抛出异常

**作用: **主动让程序报错、崩溃

语法: raise 异常类型

  • 自定义异常类型:
class AgeError(Exception):
    def __str__(self):
        return '年龄有误,正确的年龄范围是0~150岁'


age = int(input('请输入正确年龄(1~150):'))
if age < 0 or age >150:
    raise AgeError
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值