Python模块导入时全局变量__all__的作用

news/2024/7/7 7:20:50

Python中一个py文件就是一个模块,“__all__”变量是一个特殊的变量,可以在py文件中,也可以在包的__init__.py中出现。

1、在普通模块中使用时,表示一个模块中允许哪些属性可以被导入到别的模块中,

     如:全局变量,函数,类。如下,test1.py和main.py

     test1.py

__all__=["test"]
def test():
	print('----test-----')

def test1():
	print('----test1----')

   main.py

from test1 import *


def main():
	test()

	#test1()

main()

两个文件在同一个目录下。

此时执行python main.py时结果如下:


但是如果放开main.py的注释后,如下:


那么在模块中的__all__变量就是为了限制或者指定能被导入到别的模块的函数,类,全局变量等,如果指定了那么只能是指定的那些可以被导入,没有指定默认就是全部可以导入,当然私有属性应该除外。

2、在包下的__init__.py中

sound/effects/__init__.py中添加__all__ = ["echo", "surround", "reverse"]

那么就会在from sound.effects import *时,包含上面三个模块。当__init__.py为空时,只是导入这个包,并非导入模块。

__init__.py中可以执行一些初始化内容,比如:

from . import test1 导入当前目录下的test1模块

from .. import test 导入上一层目录下的test模块

因为导入 包时会首先执行下__init__.py这个文件



http://www.niftyadmin.cn/n/2015591.html

相关文章

准备充分了嘛就想学函数式编程?(Part 2)

本文讲的是准备充分了嘛就想学函数式编程?(Part 2),想要理解函数式编程,第一步总是最重要,也是最困难的。但是只要有了正确的思维,其实也不是太难。 之前的部分: 第一部分 友情提示 请读仔细读代码,确保继续…

Python浅拷贝和深拷贝的思考

简而言之,浅拷贝就是只是复制了引用,并没有复制引用指向地址的内容,可以看做是同一个对象,使用is操作符时返回true,而深拷贝刚好相反,不管变量或者对象包含多少其他的引用都原模原样复制一份,即…

Mysql创建多列唯一索引Sql

ALTER TABLE t_city_combo ADD UNIQUE INDEX t_city_combo_index (combo_id, combo_name, city_id) USING BTREE 语法 ALTER TABLE 表名英文 ADD UNIQUE INDEX 索引名英文 (列1英文, 列2英文, 列3) USING BTREE Navicat 创建索引,需要如下步骤 在表右键-->设计…

Python对象的命名和私有化

在Python中常见的变量和方法等命名通常是这样的:name:一般变量,在类中,类外都可以使用,对象直接可以访问__name:双下划线私有变量,在类中可以访问,类外不能直接访问_name:单下划线的变量&#x…

在Jmeter中使用自定义编写的Java测试代码

分类: 测试工具 2007-01-19 15:02 8204人阅读 评论(3) 收藏 举报 测试javaloadrunner编译器importtemplates我们在做性能测试时,有时需要自己编写测试脚本,很多测试工具都支持自定义编写测试脚本,比如LoadRunner就有很多自定义脚本的协议,比如"C Vuser",&…

Phtots框架简介

2019独角兽企业重金招聘Python工程师标准>>> Reference: http://www.jianshu.com/p/cc85282fac5e Phtots框架: 1.PHAsset:包含具体的每个照片的资源信息. 看看些常用的 api (1).资源的原信息. mediaType:PHAssetMediaType类型的枚举值:PHAssetMediaTypeUnknown 不知…

什么是零代码开发平台,为什么企业IT应该重视?

文/明道云创始人任向晖 零代码软件开发并非一个全新的概念。早在1992年,最早的零代码企业软件构建工具就出现在了微软的Office套件中,很多企业极客都记得那个叫做Access的数据库应用。只不过,当年的Access只是一个单机版的应用,数…

Python居然可以定义两个同名通参数的函数

一个意外的场景,我发现Python模块中是可以定义相同的名称和参数的函数的,虽然在eclipse中报错了,但是执行时没有问题的,这个是IDE的问题。 其中的含义是因为第一个函数原本由test指向,然后解释器解析到第二个test函数时…