1. 背景

最近看了一些代码,发现有些python文件在import 下面声明 __all__,查阅资料了解其含义。

2. 含义

约定公开接口 : 可以清晰明了的知道该文件暴露的接口, 约定成俗的调用该接口。

限制该行为from XXX import * : code当中不建议使用 from xxx import * 的写法的,但线下调试的时候经常用到。如果模块中没有定义 __all__,执行 from XXX import * 的时候会将模块中非下划线开头的成员都导入当前命名空间中,这样就有可能弄脏当前命名空间, 调试容易产生问题。如果显式声明了 __all__,import * 就只会导入 __all__ 列出的成员。但它只对import *起作用,对from XXX import XXX不起作用。

3. 用例

被测文件test.py

__all__ = ['a',

'b',

'run',]

a = 'aaa'

b = 'bbb'

c = 'ccc'

def run():

print 'Run the function.'

测试结果

只能导入__all__声明的变量或函数

对from test import c 无效

test 1:

In [1]: from test import *

In [2]: print a

aaa

In [3]: print b

bbb

In [4]: run

Out[4]:

In [5]: run()

Run the function.

In [6]: print c

---------------------------------------------------------------------------

NameError Traceback (most recent call last)

in ()

----> 1 print c

NameError: name 'c' is not defined

test 2:

In [7]: from test import c

In [8]: print c

ccc

注意

__all__ 是 list 类型, 不要写表达式

按照 PEP8 建议的风格,__all__ 应该写在所有 import 语句下面,和函数、常量等模块成员定义的上面

正式代码中尽量不要使用 from XXX import *

python的中文含义-python __all__ 含义相关推荐

  1. python语言中文社区-python语言中文

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 为了得到一个可以正常返回的 url ,需要修改示例中的 secretid ...

  2. python语言中文社区-python中用中文

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 花下猫语:在 python 中是否可以实现中文数字的四则运算呢? 答案是 ...

  3. python语言中文社区-python的汉语

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. sdk 3.0 实现了统一化,各个语言版本的 sdk具备使用方法相同.接 ...

  4. python语言中文社区-python解决中文

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! python 添加中文注释时出现运行失败. 需要在顶部设置编码. # coding ...

  5. python语言中文社区-python numpy看这一篇就够了-Go语言中文社区

    numpy基础 1.为什么要学习numpy? -> 快速 -> 方便 -> 科学计算的基础库 2.什么是numpy? 一个在Python中做科学计算的基础库,重在数值计算,也是大部分 ...

  6. python语言中文社区-Python 之父谈 Python-Go语言中文社区

    在宣传海报上,Python 之父 Guido van Rossum 在 EuroPython 2015 会议的发言分为讲话稿和现场问答部分,但是他上台后将全程改为现场问答的形式.他在回答现场观众的问题 ...

  7. python开发中文软件-Python 3程序开发指南(第二版)

    2011年2月出版的,绝对最新哦,扫描绝对超级清楚. 在本书中,一流的Python程序员Mark Summerfield展示了如何充分利用Python 3的功能与特性来编写代码.与以前的版本相比.Py ...

  8. Python中的__name__和__main__含义详解

    背景 在写Python代码和看Python代码时,我们常常可以看到这样的代码: ? 1 2 3 4 5 def main():     ...... if __name__ == "__ma ...

  9. paip.提升效率--调试--日志系统日志参数含义---python

    paip.提升效率--调试--日志系统日志参数含义---python #同时向控制台和文件输出日志 #日志参数含义 import logging log_format = '%(filename)s ...

最新文章

  1. python怎么判断一个文件是否存在-python判断文件是否存在的方法
  2. GRUB基本使用介绍
  3. 系统设计面试题思路综述
  4. python url编码 空格_使用请求和python时URL中的空格
  5. beyond compare类似软件_BIM工作是什么?需要哪些BIM软件来完成?
  6. Oracle中NVARCHAR2与VARCHAR2的相互转换
  7. 查看文章影响因子的插件_Scholarscope--在新版PubMed中实现基于影响因子的文献筛选...
  8. arm 模式 Linux,ARM Linux:usr模式转为svc模式的实现原理
  9. 老虎ji 剪枝模拟
  10. java开发工程师简历项目经验怎么写?应该注意哪些事项?
  11. python宿舍管理系统_python实现宿舍管理系统
  12. 投资:螺纹钢研究框架
  13. MATLAB如何打开chm文件
  14. 谷歌R语言代码风格规定:
  15. 5大原因告诉你,Python程序员为何如此难招!
  16. java 和 c md5加密_Java与C++实现同样的MD5加密算法
  17. DCG【Dual Conversion Gain】是什么?
  18. 【Web技术】1397- 深入浅出富文本编辑器
  19. 高通+android笔记本电脑,华为发布三款笔记本电脑,其中一款搭载高通骁龙850处理器...
  20. python封装线程类(启动、终止、查看线程状态)

热门文章

  1. 算法学习--Day3
  2. 使用CSS实现三栏自适应布局(两边宽度固定,中间自适应)
  3. centos下保留python2安装python3
  4. [转]那些年我们一起清除过的浮动
  5. HTML5和Flash——如何选择合适的工具
  6. 【转】ASP.NET AJAX入门系列
  7. 十大python开发软件-5款开发安全、高质量代码的优秀Python工具
  8. 如何在电脑上安装python-在电脑上安装python的方法
  9. 自学python推荐书籍2019-入门必看 | 大佬们推荐的Python书单汇总
  10. python语法基础知识总结-python语法基础知识