美文网首页
2018-09-18

2018-09-18

作者: 被强煎的荷包蛋 | 来源:发表于2018-09-18 14:42 被阅读0次

抛出自定义异常

class ShortInputException(Exception):
    #自定义的异常类
    def __init__(self,length,atleast):
        #suoer().__init__()
        self.length = length
        self.atleast = atleast


def main():
    try:
        s = input('请输入 -->')
        if len(s) < 3:
            #raise引发一个你定义的异常
            raise ShortInputException(len(s),3)
    except ShortInputException as result:#将这个变量被绑定到了错误的实例
        print('ShortInputException:输入的长度是%d,长度至少应是%d'%(result.length,result.))
    else:
        print('没有异常发生。')

main()
异常处理抛出异常.png
if None:
if []:
if {}:
#if的真假判断,这些都为假

import 模块介绍 多种功能的集合
一个py文件就是一个模块,
需要的时候再去查看py文件源代码
pip pip3管理Python模块的软件
pip3 install pygame
利用import 导入模块,要加上模块名
利用from 模块 import 函数 不需要加上模块名
form 模块 import * #少用import * 后倒入的import *中的函数会顶替之前的import *
import time as t 将time取一个别名t
import 先搜索当前路径,没有搜索到然后再去搜索系统路径

#若用import导入一个模块,会先执行一遍该模块
import sendmessage
#__all__使得import *只能导入该列表中的函数,类属性,全局变量
__all__ = ["test1","test2","Test"]
def test1():
    print("-----test1----")
def test2():
    print("-----test2----")
class Test(object):
#如果自我调用print(__name__) 为 __main__,否则打印出为模块名
if __name__ == "__main__":  
    test1()
    test2()
__init__.py包.png
如果一个文件夹TestMsg中有init.py文件,则称这个文件夹为一个包,到import Tsetmsg时, init.py就会被执行,如果init.py为空,则该包中其他.py模块都不能被使用。但是如果里面有all = ["test"],t为test中一个函数,则可以Testmsg.test.t()。(或者直接import 模块名,只限Python2。)
 #Python3中从当前路径导入
from . improt sendmsg 

制作一个模块
发布模块
创建setup.py 导入信息

python setup.py build
python setup.py sdist
python3 setup.py install
#权限不够时加上
# sudo python3 setup.py install 
发布模块.png
构建模块.png 生成压缩包.png

模块(Module)
Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块。通俗的来说,模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块。

导入模块
import: 引入具体模块,可以一次性引入多个模块,使用逗号隔开即可eg:import modlue1,module2,module3,.....moduleN , 使用模块中的函数时,格式为:moduleName.funName()
from ... import ... : 从模块中导入一个指定的部分到当前命名空间
eg: from modduleName import name1 [,name2 [,name3[,....nameN]]]

from ... import * : 把一个模块的所有内容全都导入到当前的命名空间
from moduleName import *


包将有联系的模块组织在一起,有效避免模块名称冲突问题,让应用组织结构更加清晰。
一个包可以包含多个模块。

假定我们的包的例子有如下的目录结构:

Phone/
__ init__.py
common_util.py
Voicedta/
__ init_
_.py
Pots.py
Isdn.py
Fax/
__ init__.py
G3.py
Mobile/
__ init_
_.py
Analog.py
igital.py
Pager/
__ init___.py
Numeric.py
Phone 是最顶层的包,Voicedta 等是它的子包。 我们可以这样导入子包:

import Phone.Mobile.Analog
Phone.Mobile.Analog.dial()
你也可使用 from-import 实现不同需求的导入

模块制作
首先定义函数方法文件,文件里面定义了多个函数方法可提供给外界使用。
moudle里一般都会有一个init.py文件。有的init.py中是空白,有的却会有all参数。
如果其他页面import 的时候如果init.py是空白的,可以直接import到moudle的所有函数。而如果init.py中定义了all,则import 的时候只会导入all部分定义的内容。

模块发布

模块的目录结构体:
├── setup.py
├── suba
│ ├── aa.py
│ ├── bb.py
│ └── init.py
└── subb
├── cc.py
├── dd.py
└── init.py
模块的目录结构中包含一个setup.py文件,用于定义模块名称、包含的模块等模块信息。

setup.py中的内容:
from distutils.core import setup
setup(name="模块名称", version="版本", description="模块描述", author="模块作者", py_modules=['suba.aa', 'suba.bb', 'subb.cc', 'subb.dd'(此处主要是包含的模块内容)])
构建模块

Linux命令(当前位置位于模块文件夹):
     python setup.py build

构建后目录结构
.
├── build
│ └── lib.linux-i686-2.7
│ ├── suba
│ │ ├── aa.py
│ │ ├── bb.py
│ │ └── init.py
│ └── subb
│ ├── cc.py
│ ├── dd.py
│ └── init.py
├── setup.py
├── suba
│ ├── aa.py
│ ├── bb.py
│ └── init.py
└── subb
├── cc.py
├── dd.py
└── init.py

生成发布压缩包
Linux命令(当前位置位于模块文件夹):
python setup.py sdist

打包后,生成最终发布压缩包 moduleName-version.tar.gz , 目录结构
.
├── build
│ └── lib.linux-i686-2.7
│ ├── suba
│ │ ├── aa.py
│ │ ├── bb.py
│ │ └── init.py
│ └── subb
│ ├── cc.py
│ ├── dd.py
│ └── init.py
├── dist
│ └── xwp-1.0.tar.gz
├── MANIFEST
├── setup.py
├── suba
│ ├── aa.py
│ ├── bb.py
│ └── init.py
└── subb
├── cc.py
├── dd.py
└── init.py

模块安装
找到模块的压缩包
解压
进入文件夹
执行命令sudo python setup.py install

此时,该模块已经安装到系统中,可以直接使用import关键字进行导入模块。
ps:如果在install的时候,执行目录安装,可以使用python setup.py install --prefix=安装路径

相关文章

  • 一丿蓝

    北京 2018-09-18

  • 2018-09-18

    2018-09-16 戴师傅 2018-09-18 2018-09-18 20:32 打开App (稻盛哲学学习会...

  • 晨间日记

    2018-09-18 06:03 · 字数 393 · 阅读 9 · 日记本 Eva肖肖 【20180918 18...

  • (16)纸人妈妈照样生出健康娃

    (16) 纸人妈妈照样生出健康娃 晨小贝 已关注 2018-09-18 17:53 · 字数 1433 · 阅读 ...

  • 懂你L4-U2-1-Vocabulary-Body System

    流利说 D77 2018-09-18 二 学习 Level4-Unit1-Part4*Learning- "Voc...

  • (码友推荐)2018-09-18 .NET及相关开发资讯速递

    (码友推荐)2018-09-18 .NET及相关开发资讯速递: 1.Redis 桌面管理工具 RedisDeskt...

  • 2018-09-18

    2018-09-18 工作日志 Cookie为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数...

  • 2018-09-20

    方正证券所长助理马军饭局被拍事件始末 (2018-09-18 13:11:41) 今天,方正证券所长助理兼通信行业...

  • DAL 今日职位讨论快报 113

    #13 2018-09-18 今天分享的职位来自 Adobe,熟悉作图剪片子绘画的同学肯定都曾经或多或少给 Ado...

  • 克服萧条的五项对策

    2018-09-18 (稻盛哲学学习会)打卡第158天 姓名:王燕君 部门:分水碶 组别:利他三组 【知~学习】 ...

网友评论

      本文标题:2018-09-18

      本文链接:https://www.haomeiwen.com/subject/zziunftx.html