python(七)
一 、自定义包和导入自定义包
以包名建立一个 包名相同的文件,里面至少包含__init__.py
文件。__init__.py
可以是空文件,也可以有Python代码。
因为__init__.py
本身就是一个模块,而它的模块名就是对应包的名字,调用包就是执行包下的__init__.py
文件。
之后,我们可以在包里(文件夹下)定义其他模块,如A-->A.py、B-->B.py等等。
当我们要使用这些包里的模块时,自定义的包必须在使用的py文件同级目录下,之后我们可以通过"import xx.xx"的方式导入到工程里。这里我就定义了一个app包,在run.py中使用,如下:
二、with语句
不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源。能自动处理上下文环境产生的异常,抛出异常时,exit()方法被执行。
try:
f = open('xxx')
except:
print('fail to open')
exit(-1)
finally:
f.close()
等价于
with open("flag.txt") as file: data = file.read()
with-as表达式简化了写finally的工作。
底层过程:
- with后面的语句被求值后,返回对象的“__enter__()”方法被调用,这个方法的返回值将被赋值给as后面的变量;
- with后面的代码块全部被执行完之后,将调用该对象的“__exit__()”方法。
详细运行过程:
- __enter__()方法被执行;
- __enter__()方法的返回值,赋值给变量;
- 执行代码块;
- __exit__()方法被调用。
三、assert语句
用于判断一个表达式,在表达式条件为 false 的时候触发异常。
assert expression
等价于
if not expression: raise AssertionError
如果不满足条件则直接触发异常,不必执行接下来的代码