1.完整的异常处理

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

 try:
num = int(input("输入整数:"))
print(8/num) except ValueError:
print("请输入正确的整数!")
except ZeroDivisionError:
print("不能为0") except Exception as result:
print("未知异常 %s" % result) else:
print("成功运行没有报错") finally:
print("不管有什么问题,我都要运行!") print("结束!")

ValueError和ZeroDivisionError是两个系统存在的异常,表示值错误和除(或取模)零 错误
通过try对可能存在异常的部分进行检测,如果有异常,try中代码不运行,同时检测except中的异常类型进行匹配,其中Exception表示所有异常,没有异常则运行else中能代码
finally中的代码无论是否有异常都要运行
实际获取异常中不需要这么完整,可根据具体情况自行删减

2.异常的传递性

 def fun():
num = int(input("输入整数:"))
return 10 / num try:
print(fun())
except Exception as result:
print(result)

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

3.自定义抛出异常

 def fun():
num = input("请输入9个字符:") if len(num) == 9:
return num
ex = Exception("长度不够9!") raise ex try:
print(fun())
except Exception as result:
print(result)

有些时候需要自已定义异常,来满足开发需求,那么需要raise 来返回自定义的异常

4.本包内调用其他模块

import card_main
from t1 import function as mmm

import + 模块名,如果模块名太长,可以采用as进行别名
只是获取一个方法那么可以采用from  +  模块名 + import + 函数名

5.不同包内调用模块

测试包测试导入pytest内的模块,方法同样是采用import.pytest.模块名
这里需要对pytest包内的__init__.py文件进行编写

 from . import t1
from . import 静态方法

表示允许t1和静态方法模块被调用

6.__name__

 def __main():
print(__name__) if __name__ == "__main__":
__main()

__name__是Python的内置属性,当前模块是主线程时为__main__,当前不是时为该模块的名称,
用这个方法可以成功的把模块中的实现给规避掉

7.发布模块

首先要新建一个项目,把需要共享的模块复制进来,在新建一个setup.py文件

 from distutils.core import setup

 setup(name="pytest",  # 发布的模块名
version="1.0", # 版本号
description="xxxx模块", # 简要描述
long_description="xxxxxxxxxxxxxxx", # 全部的描述
author="lsd", # 作者
url="www.baidu.com", # 主页地址 # 发布的模块名
py_modules=["pytest.t1",
"pytest.静态方法"]
)

之后,在该项目目录下打开cmd,或者Powershell

python setup.py build 表示编译
python setup.py sdist 表示发布
python setup.py install 表示安装

安装模块工具包还可以采用pip安装,这里暂时不介绍

python的异常处理和模块发布安装的更多相关文章

  1. day 5 模块发布安装

    1.模块的位置 现在当前路径查找,再到系统路径/usr/lib/python3.5/查找,再到其他系统路径查找 2.模块发布 1)模块目录结构 Msg ├── __init__.py ├── recv ...

  2. Python学习:9.模块的安装以及调用模块

    什么是模块 在Python中,模块其实也就是包含python代码的文件,我们为什么要使用模块?在我们以后写代码的时候,我们会发现有很多功能需要经常使用,那我们想要使用这些功能怎么办,要再把那些代码在敲 ...

  3. Python学习之==>第三方模块的安装、模块导入

    一.模块&包 1.模块 模块实质上就是一个Python文件,它是用来组织代码的.意思就是把Python代码写在里面,文件名就是模块的名称.例如:random.py,random就是模块的名称. ...

  4. Python科学计算包模块的安装(ubuntu)

    Python的科学计算包设计到C语言代码的编译,采用pip的方式安装会出现错误. 一种简单的方式是采用的集成包,具体的步骤参考:https://www.continuum.io/downloads#_ ...

  5. python远程登录Paramiko模块的安装

    最近做云平台的项目,需要使用python来管理所有的主机,我选择了paramiko.它跨平台的,linux和window都可以使用,pssh只支持linux. 1:安装gcc和python-devel ...

  6. Python学习笔记2——模块的发布

    1.为模块nester创建文件夹nester,其中包含:nester.py(模块文件): """这是"nester.py"模块,提供了一个名为prin ...

  7. 零基础学python之函数与模块(附详细的代码和安装发布文件过程)

    代码重用——函数与模块 摘要:构建函数,创建模块,安装发布文件,安装pytest和PEP 8插件,确认PEP8兼容性以及纠错 重用代码是构建一个可维护系统的关键. 代码组是Python中对块的叫法. ...

  8. python: 模块发布

    一.准备发布 1.为模块文件创建一个文件夹,并将模块文件复制到这个文件中(一般,文件夹的名字和模块的名字一样) 2.在文件夹中创建一个名为『setup.py』的文件,内容如下: #encoding:u ...

  9. Python模块发布

    项目根目录添加setup.py模块: from distutils.core import setup setup( name="模块名字", version="1.0. ...

随机推荐

  1. storm(5)-分布式单词计数例子

    例子需求: spout:向后端发送{"sentence":"my dog has fleas"}.一般要连数据源,此处简化写死了. 语句分割bolt(Split ...

  2. python 中mysql数据库的读写

    1.读取数据库 import pymysql id=[] name=[] explain=[] db=pymysql.Connection(host=,user="root", p ...

  3. $bzoj1016-JSOI2008$ 最小生成树计数 最小生成树 $dfs/matrix-tree$定理

    题面描述 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的).由于不同的 ...

  4. egg

    简介 阿里的   红色的是项目名字 egg-init --type simple First && cd First  egg-init --type simple Second &a ...

  5. js验证码有效时间倒计时

    js验证码有效时间倒计时 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type& ...

  6. OpenStack Neutron配置虚拟机访问外网

    配置完成后的网络拓扑如下: 当前环境: X86服务器1台 Ubuntu 16.04 DevStack搭建OpenStack 网络拓扑: 外部网络:192.168.98.0/24 内部网络:10.0.0 ...

  7. 判断title(title_is)

    判断 title 获取页面 title 的方法可以直接用 driver.title 获取到,然后也可以把获取到的结果用做断言.本篇介绍另外一种方法去判断页面 title 是否与期望结果一种,用到上一篇 ...

  8. ios UISearchDisplayController 实现 UITableView 搜索功能

    UISearchDisplayController 是苹果专为 UITableView 搜索封装的一个类. 里面内置了一个 UITableView 用于显示搜索的结果.它可以和一个需要搜索功能的 co ...

  9. Ubuntu系统下安装并配置hive-2.1.0

    说在前面的话 默认情况下,Hive元数据保存在内嵌的Derby数据库中,只能允许一个会话连接,只适合简单的测试.实际生产环境中不使用,为了支持多用户会话, 则需要一个独立的元数据库,使用MySQL作为 ...

  10. Centos7 部署.netCore2.0项目

    最近在学习.netCore2.0,学习了在Centos上部署.netCore的方法,中间遇到过坑,特意贴出来供大家分享,在此我只是简单的在CentOS上运行.NETCore网站,没有运用到nginx等 ...