• 飘逸的python


    API的设计是一个艺术活。往往需要其简单、易懂、整洁、不累赘。
    很多时候,我们在底层封装一个方法给高层用,而其它的方法只是为了辅助这个方法的。
    也就是说我们只需要暴露这个方法就行,不用关心这个方法是怎么实现的,不用关心其它辅助方法的存在。

    在python中,有几种策略来保持命名空间的整洁。

    1.变量命名用下划线_开头
    下划线_开头的变量在其它模块from xxx import *的时候不被import。
    如果你看decimal的源码,就会发现多次把import 的模块弄成下划线_开头的别名。
    http://hg.python.org/cpython/file/2.7/Lib/decimal.py
    比如
    import copy as _copy
    import math as _math
    import numbers as _numbers
    这不是蛋疼,是为了不污染命名空间

    2.定义__all__
    python的魔术方法实在是灵活。
    假设我模块中有3个方法a(),b(),c()
    我只是要暴露a而已,不需要暴露b和c。
    这时__all__=[a]
    在其它模块from xxxmodule import *的时候就只import了a了。
    而且在开发者阅读源码的时候,看到了__all__,一下子就知道要暴露的是哪些方法,而不是一堆代码无从下手。

    3.在使用了这个变量后删掉
    通过del xxx删掉。
    这样在dir(xxxmodule)的时候就减少了dir出来满屏的变量了。
    同样在decimal的源码,可以看到使用了正则表达式模块re之后,用del re删掉了。

    还有一种方法就是把import语句放在函数内,将其限制在局部作用域中。感觉这种方法不pythonic,就不推荐了。

  • 相关阅读:
    DATASNAP远程方法返回TSTREAM正解
    DELPHI获取宽带IP
    DELPHI HMAC256
    JWT -- JSON WEB TOKEN
    UNIGUI集成HTML导航
    咏南WEB APP开发框架
    购买咏南中间件
    咏南中间件当作WEB SERVER使用方法
    咏南中间件增加WEBSOCKET支持
    iOS -- 设置label的自适应
  • 原文地址:https://www.cnblogs.com/riskyer/p/3293886.html
Copyright © 2020-2023  润新知