Python 异常 导入模块

1. 体验异常

# 异常的 语法格式

'''
try:
    可能出现错误的语句
except:
    出现错误后执行的语句
'''

try:
    info_print()
except:

    def info_print():
        print('出现错误会被执行的程序')

    info_print()

2. 捕获所有异常

# Exception 捕获所有异常
try:
    print(num)
except Exception as result:
    print(result) # name 'num' is not defined

3. 异常中的else 异常中的finally

# 捕获所有异常
try:
    print(1/0)  # 被除数不能为 0
except Exception as result:
    print(result)
else:
    print(f'没有异常执行的 语句')
finally:
    print(f'有无异常都会执行的 命令 finally')

4. 异常的传递

import time

try:
    print(1)

    try:
        i = 0

        while i < 6:

            time.sleep(2) # 等待两秒后执行

            print(f'循环到了第{i}次')

            i += 1
    except:
        print(f'程序异常执行的命令2')
except:
    print(f'程序异常执行的命令1')

5. 自定义异常

# 创造一个异常的 类
class A(Exception):

    def __init__(self, lenght, min_len):
        # 密码的长度
        self.lenght = lenght
        # 系统要求的最小长度
        self.min_len = min_len

    def __str__(self):
        return f'你的密码长度为{self.lenght}, 密码长度不能小于{self.min_len}'

def main():
    try:
        password = input('请输入你的密码:')

        if len(password) < 3:
            # 抛出 异常
            raise A(len(password), 3)
    # 捕获异常
    except Exception as result:
        print(result)
    else:
        print('密码输入完成, 设置密码成功')

main()

6. 导入模块

# 方法一
# import math

# print(math.sqrt(16)) # 谁的平方是 16
# Python 中关于除法的运算都会带小数点(也就是浮点数)


# 方法二
# from math import sqrt

# print(sqrt(16))


# 方法三
# from math import *

# print(sqrt(16))

# 模块别名
# import time as tt  # 起别名后只能使用别名, 之前的名字就不能用了

# tt.sleep(2)
# print('等待2秒后出现')

from time import sleep as sl

sl(2)
print('等待2秒后出现')

7. my_module1 和 调用函数模块

# my_module1

def test(a, b):

    print(a * b)

# 1.  __name__ 是系统变量, 只有在自己的py文件中才会是 __main__
# 2.  在其他py文件中调用, __name__ 是 py 文件名
print(__name__)

# 只有在本文件中运行,才会执行测试方法
if __name__ == '__main__':
    test(3, 3)
# 调用模块

import my_module1

my_module1.test(4, 4)

8. 模块定位顺序注意点



9. __all__列表

# my_module1
# __all__ 列表
__all__ = ['testA']

def testA():
    print('testA')

def testB():
    print('testB')
# __all__ 列表
from my_module1 import *

testA()

# 1. 用 from my_module1 import * 导入时
# 2. __all__列表只能调用[]列表里面的
testB() # 会报错

10. 导入包 的两种方法




posted @ 2022-07-26 16:31  伴你如风  阅读(105)  评论(0编辑  收藏  举报