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. 编译安装php-5.3.27报错:make: *** [sapi/fpm/php-fpm] 错误 1

    安装PHP的时候make报错:make: *** [sapi/fpm/php-fpm] Error 1 原因:Centos6.8之后已经将iconv库加进来了,如果再安装libiconv库相当于重复一 ...

  2. oracle 行列转换函数之WM_CONCAT和LISTAGG的使用(一)

    一.wm_concat函数 wm_concat能够实现同样的功能,但是有时在11g中使用需要用to_char()进行转换,否则会出现不兼容现象(WMSYS.WM_CONCAT: 依赖WMSYS 用户, ...

  3. MonggoDB学习笔记

    MongoDB MongoDB介绍:非关系型的文档数据库.MongoDB的数据模型是面向文档的,文档是一种类似于JSON的结构.简单理解MongoDB这个数据库中存的是各种各样的JSON.(BSON) ...

  4. java的值传递

    java中都是值传递 如果参数是引用类型的,实际上是把引用地址复制了一份传递 例如 User user = new User(); user存放在栈中,里面存放着内存地址,new User()会在堆中 ...

  5. 查找Ubuntu下包的归属

    今天在制作docker时,发现我的程序有些依赖的包不太好找应该安装什么. 在centos下面,可以用命令: rpm -qf <libraryname> 在Ubuntu下面,发现一个网站基本 ...

  6. 解决执行maven项目出现 SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”. error

    最近再弄maven项目,运行起来没有问题,但是Console控制台会报错,比如说如下的问题异常提示: 由此我们可以看出,报出错误的地方主要是slf4j的jar包,而故障码中“Failed to loa ...

  7. Log4J2 配置文件模板及代码说明

    Log4j是Apache的著名项目,随着Java应用的越来越广泛,对日志性能等方面的要求也越来越高.Log4j的升级版本Log4j2在前些年发布.Log4J2的优点和好处有很多,可以自行搜索查阅相关文 ...

  8. OSI与TCP/IP协议区别

    1 OSI参考模型 谈到网络不能不谈OSI参考模型,虽然OSI参考模型的实际应用意义不是很大,但其的确对于理解网络协议内部的运作很有帮助,也为我们学习网络协议提供了一个很好的参考.在现实网络世界里,T ...

  9. Unity GL画折线

    新建一个脚本,这个物体得挂在有摄像机组件的物体上才能生效 OnPostRender() 这个函数才会被自动调用(类似生命周期自动调用) 然后就可以代码画线了,原理是openGL的画线 using Un ...

  10. Django查询一个权限中包含哪些用户

    Django查询一个权限中包含哪些用户 Django的Permission对象中没有直接查询相关用户的信息,而都是通过User对象来查询某个用户有哪些权限,例如: user.objects.get(u ...