建手机端网站常州seo关键词排名
1.完整的异常处理
异常处理能够保证程序出错是也能够完整运行,不会应为bug而停止运行,这里介绍下获取异常的完整格式
1 try:2 num = int(input("输入整数:"))3 print(8/num)4
5 exceptValueError:6 print("请输入正确的整数!")7 exceptZeroDivisionError:8 print("不能为0")9
10 exceptException as result:11 print("未知异常 %s" %result)12
13 else:14 print("成功运行没有报错")15
16 finally:17 print("不管有什么问题,我都要运行!")18
19 print("结束!")
ValueError和ZeroDivisionError是两个系统存在的异常,表示值错误和除(或取模)零 错误
通过try对可能存在异常的部分进行检测,如果有异常,try中代码不运行,同时检测except中的异常类型进行匹配,其中Exception表示所有异常,没有异常则运行else中能代码
finally中的代码无论是否有异常都要运行
实际获取异常中不需要这么完整,可根据具体情况自行删减
2.异常的传递性
1 deffun():2 num = int(input("输入整数:"))3 return 10 /num4
5 try:6 print(fun())7 exceptException as result:8 print(result)
异常是有传递性的,在函数方法中如果出现了异常,程序是不会直接报异常的,等到运行到主线程中还没有处理掉这个异常那么此时就会报异常,同时停止程序
按照原来的思路,需要在每个可能出现异常的地方进行获取异常,这样函数方法一多久或造成代码太过繁琐
那么根据异常的传递性可以在主线程中进行抛异常
3.自定义抛出异常
1 deffun():2 num = input("请输入9个字符:")3
4 if len(num) == 9:5 returnnum6 ex = Exception("长度不够9!")7
8 raiseex9
10 try:11 print(fun())12 exceptException as result:13 print(result)
有些时候需要自已定义异常,来满足开发需求,那么需要raise 来返回自定义的异常
4.本包内调用其他模块
import card_main
from t1 import function as mmm
import + 模块名,如果模块名太长,可以采用as进行别名
只是获取一个方法那么可以采用from + 模块名 + import + 函数名
5.不同包内调用模块
测试包测试导入pytest内的模块,方法同样是采用import.pytest.模块名
这里需要对pytest包内的__init__.py文件进行编写
1 from . importt12 from . import 静态方法
表示允许t1和静态方法模块被调用
6.__name__
1 def __main():2 print(__name__)3
4
5 if __name__ == "__main__":6 __main()
__name__是Python的内置属性,当前模块是主线程时为__main__,当前不是时为该模块的名称,
用这个方法可以成功的把模块中的实现给规避掉
7.发布模块
首先要新建一个项目,把需要共享的模块复制进来,在新建一个setup.py文件
1 from distutils.core importsetup2
3 setup(name="pytest", #发布的模块名
4 version="1.0", #版本号
5 description="xxxx模块", #简要描述
6 long_description="xxxxxxxxxxxxxxx", #全部的描述
7 author="lsd", #作者
8 url="www.baidu.com", #主页地址
9
10 #发布的模块名
11 py_modules=["pytest.t1",12 "pytest.静态方法"]13 )
之后,在该项目目录下打开cmd,或者Powershell
python setup.py build 表示编译
python setup.py sdist 表示发布
python setup.py install 表示安装
安装模块工具包还可以采用pip安装,这里暂时不介绍