◎知识点
调用内置函数dir查看模块的所有属性
模块的特殊属性之__doc__
模块的特殊属性之__name__
模块内的数据访问控制之单下划线
模块内的数据访问控制之特殊属性__all__
◎脚本练习
▽ 调用内置函数dir查看模块的所有属性
""" 可以调用内置函数dir查看模块的所有属性 1、调用内置函数dir时模块作为参数 当调用内置函数dir时如果模块作为参数,会返回指定模块的所有属性 其中,以双下划线__开始和结尾的属性是模块的特殊属性 """ import mod print(dir(mod)) """ 2、调用内置函数dir时不带任何参数 当调用内置函数dir时如果不带任何参数,会返回当前模块的局部作用域中的所有属性 """ print(dir()) var = 56 def ff(): print('ff被调用') class SomeClass(object): pass print(dir()) del var print(dir())
▽ 模块的特殊属性之__doc__
""" 调用内置函数 dir 得到的模块的所有属性中,有一个特殊属性叫 __doc__,用于表示模块的文档字符串。 1、什么是模块的文档字符串(docstring) 与函数的文档字符串类似,位于模块的第一行的字符串被称为模块的文档字符串,通常用三个引号表示。 模块的文档字符串是对模块功能的简要描述 在 PyCharm,模块的文档字符串用灰色显示。 之所以称为"文档"字符串,是因为可以使用工具根据文档字符串自动地生成文档。 应该养成编写文档字符串的习惯,以提高程序的可读性。 打开标准库中的模块 base64.py 以查看其文档字符串。 """ """ 2、访问模块的文档字符串 通过模块的特殊属性__doc__可以访问模块的文档字符串 调用内置函数help()得到的帮助信息中会包含模块的文档字符串 """ print(__doc__) import base64 print(base64.__doc__) print(help(base64))
▽ 模块的特殊属性之__name__
""" 调用内置函数 dir 得到的模块所有属性中,有一个特殊属性叫 __name__ 1、模块的特殊属性 __name__ 在不同情况下的取值 (1) 对于被导入的模块,其特殊属性 __name__ 的值为模块名 (2) 对于直接运行的模块,其特殊属性 __name__ 的值为 __main__ 2、根据 __name__ 的值判断是否执行模块中的试代码 对于模块中的测试代码,通常当直接运行模块时才需要执行,而当模块被导入时则不需要执行。因此, 可以根据 __name__ 的值判断是否执行模块中的测试代码 """
▽ 模块内的数据访问控制之单下划线
""" 为了在某种程度上实现模块內的数据访问控制,可以在模块内的某些属性前添加单下划线_。这样, 就无法使用语句"from 模块名 import *"导入相应的属性了,但是,使用语句"import 模块名" 仍然可以导入相应的属性。 """
▽ 模块内的数据访问控制之特殊属性__all__
""" 为了在某种程度上实现模块内的数据访问控制,还可以在模块内定义特殊属性__all__。这样, 使用语句"from 模块名 import *"只能导入特殊属性__all__中定义的属性,但是, 使用语句"import 模块名"仍然可以导入所有的属性。 """ """ 当使用语句"from 模块名 import *"导入属性时, 如果既在模块内的某个属性前添加了单下划线_,又将这个属性定义在模块内的特殊属性__all__中, 那么__all__比单下划线具有更高的优先级 """