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. 51nod 1812 树的双直径 题解【树形DP】【贪心】

    老了-稍微麻烦一点的树形DP都想不到了. 题目描述 给定一棵树,边权是整数 \(c_i\) ,找出两条不相交的链(没有公共点),使得链长的乘积最大(链长定义为这条链上所有边的权值之和,如果这条链只有 ...

  2. 剑指offer——面试题18:删除链表的节点

    #include"List.h" void DeleteNode(ListNode** pHead,ListNode* pToBeDeleted) { if(*pHead==nul ...

  3. jieba和文本词频统计

    ---恢复内容开始--- 一.结巴中文分词涉及到的算法包括: (1) 基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG): (2) 采用了动态规划查找最大 ...

  4. dsad

    dasdas dasdas dasdas dasdas

  5. saltstack源码详解一

    目录 初识源码流程 入口 1.grains.items 2.pillar.items 2/3: 是否可以用python脚本实现 总结pillar源码分析: @(python之路)[saltstack源 ...

  6. 2019.03.29 读书笔记 关于override与new

    差异:override:覆盖父类分方法,new 隐藏父类方法. 共同:都不能改变父类自身方法. public class Test { public string Name { get; set; } ...

  7. How do I use screen on the Linux systems?

    Scope The screen utility provides a way to run a command on a Linux system, detach from it, and then ...

  8. React创建组件的三种方式比较

    推荐文章: https://www.cnblogs.com/wonyun/p/5930333.html 创建组件的方式主要有: 1.function 方式 2.class App extends Re ...

  9. Full Text Search 实现Sort的实现方案

    CREATE TABLE dbo.pageStore( ID int NOT NULL, StoreName varchar(50) NULL, OwnerOccupation varchar(50) ...

  10. Clojure编写一个阶乘程序 使用递归

    这是递归 (def f     (fn fb     [x]    (if (< x 2)      1      (* x (fb (- x 1)) )     )        )  ) ( ...