even

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1、python的异常

异常的入门案例

try:
    print(num)
except Exception as e:
    # 打印异常信息
    print(str(e))
    
    # 打印异常的堆载信息
    import traceback
    print(traceback.format_exc())

打印错误的堆载信息,需要引入traceback的依赖

异常中的else

try:
    # 可能引发异常的代码
    result = 10 / 2
except ZeroDivisionError:
    print("除数不能为零")
else:
    # 没有发生异常时执行的代码
    print("结果:", result)

注意:通常else是表示没有异常的时候执行的代码,但这块代码的内容也可放在 result = 10 /2 下面去执行

异常中的 finally

try:
    result = 10 / 2
    print(result)
except Exception as e:
    print(str(e))
finally:
    print('this is finally')

finally 表示所有执行完成后会被执行,不管是否发生错误

 异常的对外传递

try:
    try:
        print(num)
    except Exception as e:
        print('this is inner err')
        # 通过raise关键字把异常向上抛
        raise e
except Exception as o:
    print(o)
finally:
    print('this is finally')

自定义异常

# 自定义异常
class CustomException(Exception):
    __slots__ = ['info']

    def __init__(self, info):
        self.info = info

    def __str__(self):
        return self.info


try:

    raise CustomException('这个是一个错误')

except Exception as e:
    print(e)

    import traceback
    print(traceback.format_exc())

2、python的模块 

导入模块的方式

# 直接导入模块,调用方式为 os.listdir
import os
# 以别名的方式导入模块,调用方式为 别名.方法名
import os as abc

from os import path
from os import listdir as readir
# 导入模块中的所有方法
from os import *

 模块的调试

def check():
    return 'this is check'

# 当在当前文件进行执行的时候,那么该__name__就会变成__main__,可以利用这个特性进行调试和运用分开
if(__name__ == "__main__"):
    check()

 模块定位顺序

  • 当前目录
  • 如果不在当前目录,Python则搜索在shell变量下PYTHONPATH下的每个目录
  • 如果都找不到,会查看默认目录,UNIX下,默认路径一般为/usr/local/lib/python

  注意:

  • 自已的文件名不要和已有模块的文件名重复,否则导致模块功能无法使用
  • 使用from模块名 import 功能的时候,如果功能名字重复,调用到的最后定义或导入的功能

__all__列表

如果一个模块的文件中有__all__变量,当使用 from xxx import * 导入时, 只能导入这个列表中的元素

def a():
    return 'a'

def b():
    return 'b'

def c():
    return 'c'

__all__=["a"]

这个时候在引用的文件中使用 from xxx import * 导入时,那么调用 b 与 c 方法时会报错 

python中包的概念 

包将有联系的模块组织在一起,即放到同一文件夹下, 并且这个文件夹创建一个名字为 __init__.py 文件, 那么这个文件夹就称为包

注意:__init__.py控制着包的导入行为

 

posted on 2023-07-09 00:46  even_blogs  阅读(13)  评论(0编辑  收藏  举报