Python的异常、模块、包

异常的捕获

基本捕获语法

try:
    f = open("D:/abc.txt", "r", encoding="UTF-8")
except:
    print("出现异常了,因为文件不存在,我将open的模式,改为w模式去打开")
    f = open("D:/abc.txt", "w", encoding="UTF-8")

捕获指定的异常

try:
    print(name)
    # 1 / 0
except NameError as e:
    print("出现了变量未定义的异常")
    print(e)      # 输出的就是异常出现的原因    name 'name' is not defined

捕获多个异常

try:
    # 1 / 0
    print(name)
except (NameError, ZeroDivisionError) as e:
    print("出现了变量未定义 或者 除以0的异常错误")
    print(e)
# 未正确设置捕获异常类型,将无法捕获异常

捕获所有异常

try:
    f = open("D:/123.txt", "r", encoding="UTF-8")
except Exception as e:
    print("出现异常了")
    f = open("D:/123.txt", "w", encoding="UTF-8")
else:
    print("好高兴,没有异常。")
finally:
    print("我是finally,有没有异常我都要执行")
    f.close()

异常的传递

# 定义一个出现异常的方法
def func1():
    print("func1 开始执行")
    num = 1 / 0     # 肯定有异常,除以0的异常
    print("func1 结束执行")
# 定义一个无异常的方法,调用上面的方法

def func2():
    print("func2 开始执行")
    func1()
    print("func2 结束执行")
# 定义一个方法,调用上面的方法

def main():
    try:
        func2()
    except Exception as e:
        print(f"出现异常了,异常的信息是:{e}")

main()

func2 开始执行
func1 开始执行
出现异常了,异常的信息是:division by zero

 模块的导入

导入time模块

# 使用import导入time模块使用sleep功能(函数)
import time     # 导入Python内置的time模块(time.py这个代码文件)
print("你好")
time.sleep(5)   # 通过. 就可以使用模块内部的全部功能(类、函数、变量)
print("我好")

导入time的sleep功能(函数)

from time import sleep
print("你好")
sleep(5)
print("我好")

导入time模块的全部功能

# 使用 * 导入time模块的全部功能
from time import *      # *表示全部的意思
print("你好")
sleep(5)
print("我好")

使用as给特定功能加上别名

import time as t
print("你好")
t.sleep(5)
print("我好")

from time import sleep as sl
print("你好")
sl(5)
print("我好")

导入自定义模块

import my_module1
my_module1.test(1,2)
from my_module1 import test
test(1, 2)

导入不同模块的同名功能

from my_module1 import test
from my_module2 import test   #第二个覆盖第一个
test(1, 2)

my_module1.py

__all__ = ['test_a']

def test_a(a,b):
    print(a + b)

def test_b(a,b):
    print(a - b)
# __all__变量     此时只使用test_a()函数
from my_module1 import *
test_a(1, 2)
# test_b(2, 1)        # 直接调用会报错
# __main__变量
from my_module1 import test      # 如果在my_module1中已经调用了test函数,则可以直接输出值
#     此时内置的变量结果不是__main__,只有在本文件内直接调用函数,内置变量才是__main__

Python包

# 创建一个包
# 导入自定义的包中的模块,并使用
import my_package.my_module1
import my_package.my_module2
my_package.my_module1.info_print1()
my_package.my_module2.info_print2()

from my_package import my_module1
from my_package import my_module2
my_module1.info_print1()
my_module2.info_print2()

from my_package.my_module1 import info_print1
from my_package.my_module2 import info_print2
info_print1()
info_print2()

# 通过__all__变量,控制import *
from my_package import *
my_module1.info_print1()
my_module2.info_print2()

你可能感兴趣的:(Python,python,开发语言)