手机
当前位置:查字典教程网 >脚本专栏 >python >Python中规范定义命名空间的一些建议
Python中规范定义命名空间的一些建议
摘要:API的设计是一个艺术活。往往需要其简单、易懂、整洁、不累赘。很多时候,我们在底层封装一个方法给高层用,而其它的方法只是为了辅助这个方法的。...

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中规范定义命名空间的一些建议】相关文章:

Python 获取新浪微博的最新公共微博实例分享

Python logging模块学习笔记

Python编码时应该注意的几个情况

python实现文件名批量替换和内容替换

python中的一些类型转换函数小结

python中stdout输出不缓存的设置方法

Python中文编码那些事

Python的一些用法分享

Python中的并发编程实例

Python修改Excel数据的实例代码

精品推荐
分类导航