Python中规范定义命名空间的一些建议
作者:mattkang 发布时间:2022-05-16 17:05:24
标签: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而已,不需要暴 * 和c。
这时__all__=[a]
在其它模块from xxxmodule import *的时候就只import了a了。
而且在开发者阅读源码的时候,看到了__all__,一下子就知道要暴露的是哪些方法,而不是一堆代码无从下手。
3.在使用了这个变量后删掉
通过del xxx删掉。
这样在dir(xxxmodule)的时候就减少了dir出来满屏的变量了。
同样在decimal的源码,可以看到使用了正则表达式模块re之后,用del re删掉了。
还有一种方法就是把import语句放在函数内,将其限制在局部作用域中。感觉这种方法不pythonic,就不推荐了。


猜你喜欢
- 本文实例为大家分享了python图书管理系统的具体代码,供大家参考,具体内容如下"""图书管理系统"
- 前言可能很多小伙伴会因为pycharm全是英文而烦恼吧,本博主呢也是一个英语刚过四级的小白,深知大家的难处,所以会奉上最详细的修改中文的教程
- 设置自动生成作者信息1、file->settings->Editor->file and code templates-&
- 简介黑洞图像大家都知道,毕竟前几年刚发布的时候曾火遍全网,甚至都做成表情包了。问题在于,凭什么认为这就是黑洞的照片,而不是一个甜甜圈啥的给整
- 什么是锁锁的本质,就是一种资源,是由操作系统维护的一种专门用于同步的资源比如说互斥锁,说白了就是一种互斥的资源。只能有一个进程(线程)占有。
- 经常看见有人问,MSSQL占用了太多的内存,而且还不断的增长;或者说已经设置了使用内存,可是它没有用到那么多,这是怎么一回事儿呢? 首先,我
- 先上代码:import tensorflow as tfx = tf.ones(shape=[100, 200], dtype=tf.int
- 本文实例为大家分享了js Tab选项卡切换效果,供大家参考,具体内容如下<!DOCTYPE html><html lang
- 解决办法1. 卸载重装,不设root密码,因为MySql默认密码为空。 解决办法2. 保持现在的密码,打开“MySQL Command Li
- 前言大家好,今天给大家带来绘制“手绘风格”可视化作品的小技巧,主要涉及Python编码绘制。主要内容
- 描述符是调和属性访问的一个类。描述符类可用来获取、设置或删除属性值。描述符对象是在类定义的时候构建在一个类中的。一般来说,描述符是一个具有绑
- 本文总结了YiiFramework入门知识点。分享给大家供大家参考,具体如下:创建Yii应用骨架web为网站根目录yiic webapp /
- 知识掌握 cv2.threshold()函数:设置固定级别的阈值应用于多通道矩阵,将灰度图像变换二值图像,或去除指定级别的噪声,或过滤掉过小
- 不知道大家有没有这样一个烦恼,“自己的电脑总是被别人使用,又不好意思设置密码”,所以利用python设计了一个程序来实现自由管控。功能虽然简
- 本文实例讲述了PHPExcel冻结(锁定)表头的简单实现方法。分享给大家供大家参考,具体如下:PHPExcel是一款功能比较强大的操作微软e
- 项目中需要根据不同业务进行分库,首先是将业务不同业务映射到不同过的数据库( biz --> db,可能存在多对一情况),查看sprin
- 在JavaScript的世界里,定义函数的方法多种多样,这正是JavaScript灵活性的体现,但是正是这个原因让初学者摸不着头脑,尤其对于
- 我们从小学的时候就学习了奇数偶数,知道整数可以分成奇数和偶数两大类,能被2整除的数叫做偶数,不能被2整除的数叫做奇数。在我们python编程
- 实现效果完整代码+详细注释<template> <div class="echart"&g
- 1、通常sql执行流程用户发起请求到业务服务器,执行sql语句时,先到连接池中获取连接,然后到mysql服务器执行查询。1.1 问题1:My