Python 中 __all__ 的作用

1.测试文件foo.py

# -*- coding: utf-8 -*-
# import sys
# reload(sys)
# sys.setdefaultencoding(‘gbk‘)

__all__ = [‘bar‘, ‘baz‘]

waz = 5
bar = 10
def baz(): return ‘baz‘

2.引入上文件,创建run-foo.py

# -*- coding: utf-8 -*-
# import sys
# reload(sys)
# sys.setdefaultencoding(‘gbk‘)

from foo import *

print bar
print baz

# The following will trigger an exception, as "waz" is not exported by the module
# 下面的代码就会抛出异常,因为 "waz"并没有从模块中导出,因为 __all__ 没有定义
print waz

 3.运行结果

4.把foo.py的“__all__ = [‘bar‘, ‘baz‘]” 注释,运行正常

它不仅在第一时间展现了模块的内容大纲,而且也更清晰的提供了外部访问接口。

时间: 2024-08-06 07:31:51

Python 中 __all__ 的作用的相关文章

[问与答]Python 中 __all__ 的作用 ?

你要是看Python的源码或者相关框架的源码,总是在 __init__.py 或者是源文件的开头看到一个 __all__ 变量的定义,今天就说说它的作用. orangleliu 问题出处 Can someone explain all in Python? 问题 我越来越多的使用Python了,经常看到 __all__ 变量再各种 __init__.py 文件中,谁能解释为什么那么做呢? 解答 它是一个string元素组成的list变量,定义了当你使用 from <module> import

Python中__new__的作用

__new__ 的作用 依照Python官方文档的说法,__new__方法主要是当你继承一些不可变的class时(比如int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径.还有就是实现自定义的metaclass. 首先我们来看一下第一个功能,具体我们可以用int来作为一个例子: 假如我们需要一个永远都是正数的整数类型,通过集成int,我们可能会写出这样的代码. class PositiveInteger(int): def __init__(self, value):

python中staticmethod的作用

python中的staticmethod 主要是方便将外部函数集成到类体中, 美化代码结构, 重点在可以不需要类实例化的情况下调用方法 如果去掉staticmethod,在方法中加self也可以通过实例化访问方法也是可以集成代码 1. 不使用staticmethod的代码如何写的: IND = 'ON' def checkind(): return (IND== 'ON') class Kls(object): def __init__(self, data): self.data = data

python中@property的作用和getter setter的解释

@property作用: python的@property是python的一种装饰器,是用来修饰方法的. 我们可以使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同名称的只读属性,可以与所定义的属性配合使用,这样可以防止属性被修改. 1.修饰方法,让方法可以像属性一样访问. class DataSet(object): @property def method_with_property(self): ##含有@property return 15 def m

python中reload(sys)作用

python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报错UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128),python没办法处理非ascii编码的,此时需要自己设置python的默认编码,一般设置为utf8的编码格式. 在程序中加入以下代码:即可将编码设置为utf8import sysreload(sy

笔记-Python中逗号的作用

1.用,去掉额外的换行符 >>> for i in range(0,5): ...     print i ... 0 1 2 3 4 >>> for i in range(0,5): ...     print i, ... 0 1 2 3 4 很明显 print语句默认的会在后面加上 换行  加了逗号之后 换行 就变成了 空格 赋值表达式的后面加了逗号后,会自动得到一个tuple的对象 >>> a = 1>>> b = 2,>

Python中yield的作用??

包含yield语句的函数会被特地编译为生成器函数;当函数被调用时,他们返回一个生成器对象,这个对象支持迭代器接口.函数也许会有个return语句,但它的作用是用来yield产生值的.举例如下: 1 >>> def g(n): 2 for i in range(n): 3 yield i**2; 4 5 6 >>> for i in g(5): 7 print (i,":"); 8 9 10 0 : 11 1 : 12 4 : 13 9 : 14 16

python中eval函数作用

eval函数就是实现list.dict.tuple与str之间的转化str函数把list,dict,tuple转为为字符串一.字符串转换成列表 a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]" print(type(a)) b = eval(a)print(type(b)) print(b) 二.字符串转换成字典 a = "{1: 'a', 2: 'b'}" print(type(a)) b = eval(a) print(type

Deep Learning 36:python中的一些函数

1.map(function, sequence[, sequence, ...])函数:返回一个list作用:map的作用是以参数序列中的每一个元素调用function函数,返回包含每次function函数返回值的list.例子:snrs, mods = map(lambda j: sorted(list(set(map(lambda x: x[j], Xd.keys())))), [1,0]) 上面这句话的意思是: Xd.keys()取出Xd中的键keys,形为('8PSK',-10),故s