Python中规范定义命名空间的一些建议

 更新时间:2016年06月04日 12:03:17   作者:mattkang  
命名空间是Python程序的一大根本,编程时持命名空间的整洁还是十分必要的,这里就来为大家总结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,就不推荐了。

相关文章

  • python用pd.read_csv()方法来读取csv文件的实现

    python用pd.read_csv()方法来读取csv文件的实现

    本文主要介绍了python用pd.read_csv()方法来读取csv文件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Python cookbook(数据结构与算法)将名称映射到序列元素中的方法

    Python cookbook(数据结构与算法)将名称映射到序列元素中的方法

    这篇文章主要介绍了Python cookbook(数据结构与算法)将名称映射到序列元素中的方法,结合实例形式分析了Python使用collections.namedtuple()进行元组命名相关操作技巧,需要的朋友可以参考下
    2018-03-03
  • Python 使用folium绘制leaflet地图的实现方法

    Python 使用folium绘制leaflet地图的实现方法

    今天小编就为大家分享一篇Python 使用folium绘制leaflet地图的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • wxpython绘制圆角窗体

    wxpython绘制圆角窗体

    这篇文章主要为大家详细介绍了wxpython绘制圆角窗体,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • Pytest中conftest.py的用法

    Pytest中conftest.py的用法

    conftest.py文件到底该如何使用呢,下面我们就来详细了解一下conftest.py文件的特点和使用方法吧,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • django中path和url函数的具体使用

    django中path和url函数的具体使用

    本文主要介绍了django中path和url函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Python Tkinter 简单登录界面的实现

    Python Tkinter 简单登录界面的实现

    今天小编就为大家分享一篇Python Tkinter 简单登录界面的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python中根据时间自动创建文件夹的代码实现

    Python中根据时间自动创建文件夹的代码实现

    这篇文章主要介绍了Python中根据时间自动创建文件夹的代码实现,这样的话给工作带来极大的便利,方便桌面文件按时间存放,具体实例代码跟随小编一起看看吧
    2021-10-10
  • Python简单实现子网掩码转换的方法

    Python简单实现子网掩码转换的方法

    这篇文章主要介绍了Python简单实现子网掩码转换的方法,涉及Python字符串相关操作技巧,需要的朋友可以参考下
    2016-04-04
  • python的staticmethod与classmethod实现实例代码

    python的staticmethod与classmethod实现实例代码

    这篇文章主要介绍了python的staticmethod与classmethod实现实例代码,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02

最新评论