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

  1. python类与方法与函数_Python 中的函数与类的方法

    在 python 中,def 定义的函数与类中的方法有很大的不同,两者是不同的类型. >>> def foo(): ... print "foo" ... > ...

  2. python中main方法的用法_Python中的main方法

    估计很多人跟我一样初学python看代码的时候先找一下main()方法,从main往下看.但事实上python中是没有你理解中的"main()"方法的.言归正传 if name = ...

  3. python属性和方法的区别_Python中几种属性访问的区别

    起步 python的提供一系列和属性访问有关的特殊方法:__get__, __getattr__, __getattribute__, __getitem__ .本文阐述它们的区别和用法. 属性的访问 ...

  4. python属性和方法的区别_Python中几种属性访问的区别与用法详解

    起步 在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作.例如,有一个类实例对象foo,它有一个name属性,那便可以使用foo.name对此属性进行访问.一般而言, ...

  5. python调用ctypes中windll中的方法超时处理_python中使用ctypes调用MinGW生成的动态链接库(dll)...

    关于gcc编译dll的我就不说了,网上举例一大堆,下面以g++为例. 假设有一个test.cpp文件如下: extern "C" { __declspec(dllexport) d ...

  6. python内置方法怎么使用_python中的常用内置方法

    s='sdfsdfsd' # # lista=[1,2,3,4,5] # # l2=reversed(lista) sli=slice(1,4,2) print(s[sli]) # # print(l ...

  7. python函数与方法的区别_python中函数和方法有哪些区别

    python中函数和方法有哪些区别 发布时间:2020-11-16 09:30:04 来源:亿速云 阅读:89 作者:小新 小编给大家分享一下python中函数和方法有哪些区别,相信大部分人都还不怎么 ...

  8. python中的方法什么意思_python中的函数和方法的区别是什么

    python中的函数和方法的区别: 1.函数要手动传self,方法不用传self. 2.如果是一个函数,要用类名去调用,如果是一个方法,要用对象去调用. 举例说明:class Foo(object): ...

  9. python中index方法详解_Python中的index()方法使用教程

    index()方法确定字符串str,如果起始索引beg和结束索引end在末尾给出了找到字符串或字符串的一个子串.这个方法与find()方法一样,只是如果没有找到子符趾会抛出一个异常. 语法 以下是in ...

  10. python中update是啥意思_python中update的基本使用方法详解

    前言 Python 字典 update()方法用于更新字典中的键/值对,可以修改存在的键对应的值,也可以添加新的键/值对到字典中. 语法格式 d.update(e) 参数说明 将e中键-值对添加到字典 ...

最新文章

  1. oracle exp 二进制,Oracle备份之exp自动逻辑备份(二)
  2. 配置库用户_GEE学习笔记 六十八:【GEE之Python版教程二】配置Python开发环境
  3. python -m pip install [package] --no-deps
  4. SQL2005删除用户的时候,产生“数据库主体在该数据库中拥有架构,无法删除”的解决办法...
  5. 31 岁的我为何会在创业成功后选择编程?
  6. linux文件控制驱动程序,Linux设备驱动程序学习(6)-高级字符驱动程序操作[(3)设备文件的访问控制]...
  7. centos7更改默认的python版本,安装python3.6.4
  8. 外贸网站SEO优化要共享IP还是独立IP
  9. 计算机显示程序错误,电脑老是提示应用程序错误怎么办
  10. pyecharts动态图表嵌入ppt
  11. excel自动调整行高和设置默认行高
  12. 计算机招聘试题选择题,计算机考试题库:计算机基础练习题(39)
  13. MySQL主从同步(一主一从、一主多从、主从从)等结构的概述与配置
  14. hibernate: 用Disjunction和Conjunction构造复杂的查询条件
  15. 经典书籍《征服市场的人》阅读心得
  16. 电脑数据,电脑数据恢复软件,失易得数据恢复
  17. glm::quat 四元数,坑了一下午
  18. java毕业设计SEOUL设计师品牌代购商城Mybatis+系统+数据库+调试部署
  19. 读论文-SOD-U2Net算法研究
  20. File之mkdir和mkdirs

热门文章

  1. C# 利用反射调用类下的方法
  2. GitLab首席执行官Sid Sijbrandij畅谈当前开发实践
  3. Linux-Load Average解析
  4. Ajax Toolkit日历控件CalendarExtender求教!
  5. python c#_【分享】C# 调用 Python 脚本, 与 Python 调用 C# 类库
  6. 一键修改分辨率bat_求使用批处理BAT设置分辨率的方法介绍?
  7. startupinfo为什么需要初始化_为什么 TCP 建立连接要三次握手
  8. Linux下qt注册登录,QT学习笔记:登录对话框
  9. cv python 找不同_python – 在Gridline for GridSearchCV中替换不同的模型
  10. centos7使用蓝牙_Nmon的使用和APP测试要点