python异常处理及模块和导包

  • 异常

  • 异常介绍

当python检测到一个错误时,解释器就无法继续执行了,反而出现一些错误提示,这就是所谓的“异常”。
python中出现错误通常叫:__Error
Java中出现错误通常叫:__Exception
经典异常:
空指针异常
角标越界
类型转换错误
文件不存在异常
算数异常
print(1/0)    # 算数异常 division by zero

age=int(input('请输入1-10数字:'))    # 转换异常 invalid literal for int() with base

# 角标越界 list index out of range
list=[1,2,3]
print(list[10])

# 空指针异常 'NoneType' object has no attribute 'run'
class Person:
    def run(self):
        print('00000000000')


p1 = None
p1.run
  • 异常处理

关键词:try:
有可能出现错误的代码
except Exception as e:
出现异常要执行的逻辑
else
没有出现异常执行的逻辑
finally
不管有没有出现异常都要执行
try:
    i = i / 0
except Exception as e:  # 出现异常输出,程序不会崩溃
    print('出现异常了........')
else:  # 没有异常
    print('没有出现异常.........')
finally:  # 代码肯定会执行,释放资源(文件操作-打开文件-写入内容-关闭文件的逻辑写到finally中)
    print('这是finally')
print('哈哈哈哈....')
  • 异常信息的传递

可以在代码的任何地点处理这个异常,只要try中包含异常的部分就可以。出现异常后系统会直接处理try中包含的代码
  • 抛出异常

# 抛出异常
# 主动抛出异常的目的,直接让程序报错,直到程序在那个位置
# 关键词:raise 使用方法:raise Exception
# 请输入年龄,判断
age = int(input('请输入年龄:\n'))
if age <= 0 or age >= 140:
    # print('年龄不合法')
    raise Exception('年龄非法')  # 让程序直接报错,报错内容自己可以定义
else:
    print('年龄合法')
  • 类型判断

关键词:isinstance 判断数据类型是否是什么
# 类型判断
a = 12  # int
b = 'hello'  # str
c = ['1', '2']  # list
print(isinstance(a, int))  # True
print(isinstance(a, str))  # False
# 判断字符串不能为空
def isEmpty(s):
    if s == None:
        return True
    if s == '':
        return True
    if isinstance(s, str):  # 判断s是否是字符串
        if s.strip() == '':
            return True
    else:
        return False


print(isEmpty([]))  # 传入空列表,返回False
  • 导包

  • 模块

  • 在python中,代码是放在扩展名为py 的文件中的;一个.py 文件就是一个模块(Module)

  • 又可以把许多模块按照功能放到不同的目录中来组织模块;这些组织存放模块文件的目录,我们称之为包

  • python中的分包

Python 模块(Module),其实就是一个Python 文件,以 .py 结尾。
模块让你能够有逻辑地组织你的 Python 代码段。
把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
模块能定义函数,类和变量,模块里也能包含可执行的代码。
模块的名字就是py文件名。
不同模块中的变量互不影响(同名也可以)。
  • 包的概述

模块多了,也容易同名。这个时候就有了包,不同包中的模块互不影响(即使同名)。包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境,简单来说,包就是文件夹。(规范:要有__init__.py 文件)
  • 包的写法

  • 多级包
Android中区分唯一的应用APP 通过包名来区分。
com.baidu
com.tencent
com.alibaba
com.58tc
com.yuhuayuanzhi
通常包命名规则
按照类型进行二次分包
com.baidu.domain #用来方式Person Student
com.baidu.dao #实现数据逻辑(操作数据库)
com.baidu.service #实现业务逻辑
com.baidu.controller #控制层
com.baidu.utils #工具包
com.yuhuayuanzhi.testUtils 下存放的都是 工具文件.Py
  • python模块中基本导入

Import os
模块就好比是工具包,要想使用这个工具包的工具,就需要导入这个模块。
在Python中用关键字import来引入模块,比如要引入模块(文件),math,就可以在文件最开始的地方用import math来引入。
Import os
Import math
# os 文件操作
# math 处理数学操作

# 第一种导包方式:from 模块名称 import 函数名字
from math import sqrt    # 导入math包
print(sqrt(9))  # 3.0

# 第二种导包方式:导入到当前模块,通过模块名称,调用函数
import math
print(math.sqrt(4)) # 2.0
  • 导入自定义工具包

s = 'hello'

# 直接导入对应的函数,通过函数直接调用
from com.baidu.utils.My_Utils import isEmpty

print(isEmpty(s))  # False

# 导入对应的模块,通过模块调用对应函数
from com.baidu.utils import My_Utils

print(My_Utils.isEmpty(s))  # False
  • 导入自定义的类

# from com.baidu.pojo.person import * # *代表模块内的所有内容,也可以写具体的哪个类
from com.baidu.pojo import person  # 直接导入模块

un = input('请输入你的用户名:\n')
pwd = input('请输入你的密码:\n')
# 调用person模块,判断是否登陆成功
person = person.Person()  # 导入的是模块,需要声明是模块中的哪个类,要是直接导入类,不需要再次声明
flag = person.checkLogin(un, pwd)
if flag:
    print('登陆成功')
else:
    print('登陆失败')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值