美文网首页
2020-02-19python高手之路学习随笔(3)

2020-02-19python高手之路学习随笔(3)

作者: 七天七念 | 来源:发表于2020-02-18 23:23 被阅读0次

第三章 管理API变化

在python中用下划线作私有API的前缀,比如_foo就是私有API, foo这种则是公有API

当决定修改API的时候要通过文档对修改进行详细地记录,包括:
1 记录新的接口API
2 记录废弃的旧接口
3 记录如何升级到新接口
4旧API不要直接删除,等到维护实在太麻烦的时候再删除

一般情况下使用""" 或者# 添加注释队API进行说明,不过一般情况下,用户很少会去看底层的API注释。
更近一步的是使用名为warnings 模块,来对控制台进行强制输出提示

#!/usr/bin/env python
#-*- coding:utf-8 -*-
import warnings

class Car(object):
    def turn_left(self):

        warnings.warn("测试,看看就知道了",DeprecationWarning)

        self.turn(direction="left")

    def turn(self,direction):

        pass


from lianxi2 import Car
c=Car()
c.turn_left()

按书上代码 理论上应该出信息,但是再python2.7之后的版本里面,DeprecationWarning,PendingDeprecationWarning,ImportWarning都已经被默认屏蔽了,如果想看见需要再控制台的情况下输入python -W all。
一般这个办法不靠谱,推荐直接使用warnings的基类warnings.warn("测试,看看就知道了",Warning)
附上warnings的错误异常

类 描述

Warning 这是所有警告类别类的基类。它是Exception的一个子类。

UserWarning warn()的默认类别。

DeprecationWarning 有关不推荐使用的功能的警告的基本类别(默认情况下被忽略)。

SyntaxWarning 基本类别,用于警告关于可疑语法特征的警告。

RuntimeWarning 有关可疑运行时功能的警告的基本类别。

FutureWarning 关于构造的警告的基本类别将在未来语义上发生变化。

PendingDeprecationWarning 基本类别,用于警告将来不推荐使用的功能(默认情况下会被忽略)。

ImportWarning 在导入模块的过程中触发警告的基本类别(默认情况下会被忽略)。

UnicodeWarning 与Unicode相关的警告的基本类别。

如果想撤销警告可以使用

import warnings

def fxn():
    warnings.warn("deprecated", DeprecationWarning)

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    fxn()

在上下文管理器中,所有的警告都将被忽略。这使您可以使用已知不推荐的代码,而不必查看警告,同时不抑制其他可能不知道其使用弃用代码的代码的警告。注意:这只能在单线程应用程序中保证。如果两个或更多线程同时使用catch_warnings上下文管理器,则行为是未定义的。
另一点 再控制台运行 python -W error 可以把这些警告全部转化为异常 跳出
比如:

python -W error 
>>> import warnings
>>> warnings.warn("测试测试")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UserWarning: 测试

书上提供了另一个库debtcollector。

from debtcollector import moves
class Car(object):
    @moves.moved_method("turn",version="1.1")
    def turn_left(self):
        """

        Trun the car left
        """

        self.turn(direction="left")

    def turn(self,direction):

        pass

理论上这玩意是通过装饰器来操作的。看着感觉简单,但是感觉并没有warnings好用,如果使用这个库,会让代码耦合性太高吧?

本章总结
1设计API要使用简单,同时api 变化最好是不变的情况下修改内容。
2API最好是趋于一致性
3编写文档,实时的
4简单实现,优化代码

高手之路第三章管理API变化学习完毕,感觉这章更多的是教学的API的设计思路,更API设置的时候插入警告。

相关文章

  • 2020-02-19python高手之路学习随笔(3)

    第三章 管理API变化 在python中用下划线作私有API的前缀,比如_foo就是私有API, foo这种则是公...

  • 高手的学习之路

    信息时代,每天被各种各样的信息充斥,可是为什么越学习越感到自己无知呢? 每天你通过刷微博微信感觉学到了“五车”的知...

  • 测试

    随笔,观望很久,怎么着也要开始学习了吧。 1.学习规划 2.随笔 3.周更3篇进度;

  • PS自学笔记之李涛的高手之路 | 1. 光和色的关系

    ——李涛PS高手之路基础篇学习。 PS是对已有的艺术体系进行再加工。整个PS过程旨在解决3个问题:颜色、分辨率、图...

  • 《学习高手》3

    第5课,善于写作业,让学习游刃有余 可用如下方法:1,提前写未来的作业(例如周记)。2,利用好碎片时间写作业,比如...

  • #30天橙长计划#张鑫+结构思考+第3天

    张鑫 沈阳【每日一结构】 理解罗辑思维183期“怎样成为一个高手”反思学习之道 G:【反复刻意练习——高手养成之路...

  • 极客时间,课程优惠码

    1.极客时间代码精进之路优惠码 极客时间Andorid开发高手课优惠码Android开发高手课 3.极客时间趣谈网...

  • 随笔||学习之路

    前些时候报名了一个学习课,主要是大家的公益讲授课。 昨天开始进行,两天时间,上下午各一场,有讲散文,有讲写作,有讲...

  • 通往“高手”之路 Part 3

    昨天在工作的时候,我发现一件重要的事:清楚准确地把自己不明白的点表达出来,也就是学会提问。提问这件事主要针对两个方...

  • python高手之路 笔记3

    限制python运行内存为128MB a = yield x 解释 调用时使用c = f.send(b);结果是c...

网友评论

      本文标题:2020-02-19python高手之路学习随笔(3)

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