码迷,mamicode.com
首页 > 其他好文 > 详细

eight day1----模块和包,异常处理

时间:2018-05-29 00:30:14      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:调用   字节   error   执行   命令   size   ISE   cal   必须掌握   

复习

 1 基础数据类型 
 2     int float。。。  
 3     list
 4     dict set  字典通过key取值
 5 for循环 while循环  条件语句
 6 。。
 7 文件操作:
 8     with打开两个文件,会报错;;最靠谱的close、open
 9     打开模式 :记住 a w r ab wb rb即可
10         a w r  --直接对字符串操作
11          ab wb rb---直接对字节操作
12      操作系统的编码和python编码不一致的乱码问题
13  函数:
14     函数基础:
15     定义时:
16     调用:
17     函数的命名空间:
18         在函数的内部可以使用外部的变量 可以直接读  写改:global改全局 ,nonlocal改局部
19         在外部不能使用函数内部的变量
20     闭包--装饰器
21         是在函数的前后添加功能----以后直接引用写好的装饰器
22     生成器函数----迭代器--生成器表达式--列表推导式 
23         yield写代码时可以尽量使用,很好的节省内存
24         生成器表达式和列表推导式能够很好的简化代码
25         迭代器  生成器函数(特点:调用不执行)--面试之前看即可
26     递归函数
27         大部分的递归都可以用循环实现
28         递归相比于循环来说,并不能节省内存,还占用更多的空间---会发视频
29         算法用到的特别多 
30 模块
31     内置模块  10个
32         collections   namedtuple 有序字典--必须掌握   /默认字典
33         os    记住文件和文件夹的操作,和路径相关的(计算大小、是否是文件、文件夹);执行操作系统命令
34         sys    sys.path   sys.argv
35         time    三种时间格式:字符串(格式化)--元祖(结构化)--浮点(时间戳)
36         random  随机的整数小数  抽取 打乱顺序
37         re   正则:大部分的正则表达式都能搜到(除了python)  findall search /match
38         序列化   pickle json ---四个方法必须记住  shelve
39         hashlib  摘要算法的模块  文件的一致性校验  加密认证
40         logging     加日志的模块copy模板即可
41         configpaser    配置文件相关的,不用记
42         
43     扩展模块
44     自定义模块 
45         模块和包
46 面向对象
47     基础的定义 :类 对象 实例化
48     class 定义 语法
49     三大特性:继承**** 封装*** 多态*
50         继承的规则。。。 必须记
51             多继承的查找顺序问题:。。
52             super不是单纯的寻找父类,而是遵循mro(g广度优先)顺序
53         封装:__名字   私有的属性既不能被继承,也不能从类的外部调用 
54         多态 python自带
55     组合。。
56     反射:hasattr getattr 用字符串的形式来获取变量
57     内置方法:__new__类的构造方法,在init执行执行   单例模式
技术分享图片
 1 # 基础数据类型
 2     # int float      加减乘除 乘方取余 小数的保留几位小数 round
 3     # 可以存放任意的数据类型,增删改查
 4         # str  list tuple  序列  —— index
 5             # 字符串 split strip startswith join
 6         # dict set    散列
 7 # for循环 while循环 条件语句
 8     # while循环  你不知道要循环多少次
 9     # for循环    你知道要循环多少次
10     # 条件判断   一条if语句只有一个分支被执行
11 # 文件操作:open/close
12     # 打开模式
13         # a w r     ——直接对字符串操作
14         # ab wb rb  ——直接对字节操作
15     # 操作系统的编码和python编码不一致的乱码问题
16 # 函数
17     # 函数基础 :
18         # 定义:关键字、参数:位置参数,*args,默认参数(关键字参数)=默认值,**kwargs、返回值
19         # 调用:关键字:函数名(),参数:按照位置传,按照关键字传,接收返回值
20     # 函数的命名空间:
21         # 在函数的内部可以使用外部的变量:读,写改:声明 global改全局,nonlocal是改局部
22         # 在外部不能使用函数内部的变量
23     # 闭包 —— 装饰器
24         # 是在函数的前后添加功能
25     # 生成器函数 —— 迭代器 —— 生成器表达式 —— 列表推导式
26         # yield写代码的时候可以尽量用,很好的节省内存
27         # 生成器表达式和列表推导时能够很好的简化代码
28         # 迭代器 生成器函数(调用不执行)—— 面试之前看
29     # 递归函数
30         # 大部分的递归都可以用循环实现
31         # 递归相比循环来说 并不能节省内存 还占用更多的空间
32         # 算法用到的特别多
33 # 模块
34     # 内置模块
35         # collections  namedtuple 有序字典 /默认字典
36         # os   文件和文件夹的操作/和路径相关的/执行操作系统命令
37         # sys  sys.path  sys.argv
38         # time   三种时间格式 :字符串(格式化) 元祖(结构化) 浮点(时间戳)
39         # random 随机整数 小数 抽取 打乱顺序
40         # re     正则 : findall search
41         # 序列化 pickle json shelve
42         # hashlib 摘要算法的模块 文件的一致性校验 加密认证
43         # logging 加日志的模块
44         # configpaser --
45     # 扩展模块
46     # 自定义的模块
47         # 模块和包
48 # 面向对象
49     # 基础的定义
50         # 类 对象 实例化
51         # class 定义 语法
52         # 三大特性 : 继承**** 封装*** 多态*
53             # 继承 继承的规则 子类可以使用中的所有非私有的名字,前提是子类没有
54                 #  多继承的查找顺序问题: 经典类深度优先 新式类 广度优先
55                 #  super不是单纯的寻找父类,而是遵循mro(广度优先)顺序
56             # 封装
57                 # 私有的属性既不能被继承 也不能从类的外部调用
58             # 多态 python自带
59         # 组合 一个类的对象作为另外一个类对象的属性
60         # 反射 : hasattr getattr 用字符串的形式来获取变量
61         # 内置方法 :__new__类的构造方法,在init之前执行
课上详细版

一、异常处理

语法错误:缩进错误,输入不存在的命令
逻辑错误:代码排错,从下往上看;找自己写的代码
ValueError等
except 找到一个满足条件的其他分支都不走了
常用异常
万能异常
except:pass
except Exception:pass
except Exception as e:print(e) 推荐使用,报的异常更具体

最好分开写异常。万能异常放在最下面
# 具体的异常处理+万能异常:
    # 能够提前预料到的异常都应该用具体的异常去处理,剩下其他的异常用万能异常控制
    # 万能异常应该写在最后

如果try语句中的代码都顺利的执行了,没有报错,那么执行else中的语句
else不能脱离except,不写except会报错
finally:无论如何都会执行
总结:
# try:
#     pass #可能有问题的代码
# except ValueError:  # 能预料到的错误
#     pass
# except Exception as e:print(e) # 能处理所有的异常
# else:pass          # try中的代码没有错误的时候执行
# finally:pass       # 无论如何都会执行的

#知道错误类型,不知道如何处理,可以用except
在代码未成型时不用加异常处理

raise ValueError:pass 主动抛异常--不常用
自定义异常:自定义一个类,继承BaseException
# class EvaException(BaseException):
#     def __init__(self,msg):
#         self.msg=msg
#     def __str__(self):
#         return self.msg
# obj = EvaException(类型错误)
# print(obj)

断言 assert 条件不满足,后面代码都不执行
eg:if 1==2 抛异常
二、模块 (py)
导入一个模块,就相当于执行这个文件
一个模块如果执行多次import是什么效果?只执行一次
import
一个模块相当于执行这个模块
那么再导入这个模块所处的命名空间中,就有了一个名字,这个名字会指向属于自己的空间,
空间里存储了所有文件中的名字
起别名 import...as
不推荐一行导入多个模块
from 模块名 import 函数名/类名 导入所有名字,不会节省内存
也可以起别名 from my_module import func as f,money as m
小结。。
from 模块名 import * 导入所有名字 可以直接用,与import 模块名不同my_module.函数名
*和被导入模块__all__是互相影响的
sys.path获取路径
技术分享图片
 1 # 模块总结
 2 # 能不能导入模块 : sys.path
 3 # 导入模块的顺序 : 内置 扩展 自定义
 4 # 导入模块 : 相当于执行了这个模块,文件中的名字会被存储在一块独立的内存空间中
 5 
 6 # import
 7 # 在全局创建了一个模块名,指向属于这个模块的命名空间
 8 # 空间里存储了所有文件中的名字
 9 # 起别名 import ... as ..
10 # 不推荐一行导入多个模块
11 
12 # from import
13 # import后面的名字会出现在全局 ,相当于对独立命名空间中的一个引用
14 # from import 也支持 as语句 也支持 导入多个名字
15 # from import * 相当于导入所有名字,*和被导入模块__all__是互相影响的
模块总结

技术分享图片
1 # import my_module
2 # my_module.func()
3 #
4 # from my_module import func
5 # func()
6 #
7 # from my_module import *
8 # func()
3种结果一样

三、包

包:一组py文件组成的文件夹,在这个文件夹里有一个__init__.py
两种import方式
技术分享图片
# import glance.api.policy as policy
# policy.get()
# import glance.api.policy
# glance.api.policy.get()
import--起别名调用时简化

from....import方式
技术分享图片
# from glance.api import policy
# policy.get()
from...import

为何模块的导入要从glance开始?默认在当前目录下
要精确到模块

import glance 不能用glance.api.policy.get()
导入一个文件相当于执行了这个文件中的代码
技术分享图片
# import glance
# glance.api.policy.get()  # 不行
# 导入一个文件相当于执行了这个文件中的代码
# __init__文件有什么用?
# 但是导入一个包相当于执行这个包中的init文件
# import后面的这个名字 永远会出现在全局的命名空间里
View Code
绝对路径的导入: 在两个init中添加,导入例子
技术分享图片
# import glance       # 绝对导入
# glance.api.policy.get()
View Code
from glance import api
from glance.api import policy

相对路径的导入:两个init中改为. 只要能找到glance即可
技术分享图片
# import glance       #相对导入
# # D:\myproject\PY21\day8
# glance.api.policy.get()
View Code

 


相对导入缺点:带有相对导入路径的文件不能直接执行--会报错(在自己的init中不能执行,因为所执行的目录不一致啊)
经常用all的形式
py中一切皆对象,类似于实例化
技术分享图片
 1 glance/                   
 2 
 3 ├── __init__.py      from glance import api
 4                              from glance import cmd
 5                              from glance import db
 6 
 7 ├── api                  
 8 
 9 │   ├── __init__.py  from glance.api import policy
10                               from glance.api import versions
11 
12 │   ├── policy.py
13 
14 │   └── versions.py
15 
16 ├── cmd                 from glance.cmd import manage
17 
18 │   ├── __init__.py
19 
20 │   └── manage.py
21 
22 └── db                   from glance.db import models
23 
24     ├── __init__.py
25 
26     └── models.py
27 
28 绝对导入
绝对导入例子
技术分享图片
glance/                   

├── __init__.py      from . import api  #.表示当前目录
                     from . import cmd
                     from . import db

├── api                  

│   ├── __init__.py  from . import policy
                     from . import versions

│   ├── policy.py

│   └── versions.py

├── cmd              from . import manage

│   ├── __init__.py

│   └── manage.py    from ..api import policy   
                     #..表示上一级目录,想再manage中使用policy中的方法就需要回到上一级glance目录往下找api包,从api导入policy

└── db               from . import models

    ├── __init__.py

    └── models.py

相对导入
相对导入例子

import glance之后直接调用模块中的方法

技术分享图片
glance/                   

├── __init__.py     from .api import *
                    from .cmd import *
                    from .db import *    
├── api                  

│   ├── __init__.py   __all__ = [policy,versions] 

│   ├── policy.py

│   └── versions.py

├── cmd               __all__ = [manage]    

│   ├── __init__.py

│   └── manage.py    

└── db                __all__ = [models]              

    ├── __init__.py

    └── models.py


import glance
policy.get()

import glance
import glance

 



 

eight day1----模块和包,异常处理

标签:调用   字节   error   执行   命令   size   ISE   cal   必须掌握   

原文地址:https://www.cnblogs.com/lijie123/p/9102650.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!