zoukankan      html  css  js  c++  java
  • python的异常处理和模块发布安装

    1.完整的异常处理

     异常处理能够保证程序出错是也能够完整运行,不会应为bug而停止运行,这里介绍下获取异常的完整格式

     1 try:
     2     num = int(input("输入整数:"))
     3     print(8/num)
     4 
     5 except ValueError:
     6     print("请输入正确的整数!")
     7 except ZeroDivisionError:
     8     print("不能为0")
     9 
    10 except Exception 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 def fun():
    2     num = int(input("输入整数:"))
    3     return 10 / num
    4 
    5 try:
    6     print(fun())
    7 except Exception as result:
    8     print(result)

    异常是有传递性的,在函数方法中如果出现了异常,程序是不会直接报异常的,等到运行到主线程中还没有处理掉这个异常那么此时就会报异常,同时停止程序
    按照原来的思路,需要在每个可能出现异常的地方进行获取异常,这样函数方法一多久或造成代码太过繁琐
    那么根据异常的传递性可以在主线程中进行抛异常

    3.自定义抛出异常

     1 def fun():
     2     num = input("请输入9个字符:")
     3 
     4     if len(num) == 9:
     5         return num
     6     ex = Exception("长度不够9!")
     7 
     8     raise ex
     9 
    10 try:
    11     print(fun())
    12 except Exception 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 . import t1
    2 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 import setup
     2 
     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安装,这里暂时不介绍

  • 相关阅读:
    JSON格式
    多行写入
    文件对象write() and read()
    一个虚拟摄像头Filter(Virtual Cam Capture Filter)
    五十种最好的开源爬虫
    web scraper 里的 Element click 模拟点击「加载更多」
    介绍一款好用又易学的爬虫工具:web scraper
    安装宝塔面板后 ,centos系统 挂载硬盘 或者 数据盘和系统盘合并
    帝国CMS恢复搜索功能 增加搜索数据源设置教程
    安装帝国CMS步骤 和恢复数据
  • 原文地址:https://www.cnblogs.com/lisd/p/9453686.html
Copyright © 2011-2022 走看看