4

Python模块的特殊属性 | CHEGVA

 2 years ago
source link: https://chegva.com/5445.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Python进阶(21)—模块的特殊属性

◎知识点

  1. 调用内置函数dir查看模块的所有属性

  2. 模块的特殊属性之__doc__

  3. 模块的特殊属性之__name__

  4. 模块内的数据访问控制之单下划线

  5. 模块内的数据访问控制之特殊属性__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())
Python

▽ 模块的特殊属性之__doc__

"""
调用内置函数 dir 得到的模块的所有属性中,有一个特殊属性叫 __doc__,用于表示模块的文档字符串。

1、什么是模块的文档字符串(docstring)
    与函数的文档字符串类似,位于模块的第一行的字符串被称为模块的文档字符串,通常用三个引号表示。
    模块的文档字符串是对模块功能的简要描述
    
    在 PyCharm,模块的文档字符串用灰色显示。
    之所以称为"文档"字符串,是因为可以使用工具根据文档字符串自动地生成文档。
    
    应该养成编写文档字符串的习惯,以提高程序的可读性。
    打开标准库中的模块 base64.py 以查看其文档字符串。
"""

"""
2、访问模块的文档字符串
    通过模块的特殊属性__doc__可以访问模块的文档字符串
    调用内置函数help()得到的帮助信息中会包含模块的文档字符串
"""

print(__doc__)

import base64
print(base64.__doc__)

print(help(base64))
Python

▽ 模块的特殊属性之__name__

"""
调用内置函数 dir 得到的模块所有属性中,有一个特殊属性叫 __name__


1、模块的特殊属性 __name__ 在不同情况下的取值
    (1) 对于被导入的模块,其特殊属性 __name__ 的值为模块名
    (2) 对于直接运行的模块,其特殊属性 __name__ 的值为 __main__

2、根据 __name__ 的值判断是否执行模块中的试代码
    对于模块中的测试代码,通常当直接运行模块时才需要执行,而当模块被导入时则不需要执行。因此,
    可以根据 __name__ 的值判断是否执行模块中的测试代码
"""
Python

▽ 模块内的数据访问控制之单下划线

"""
    为了在某种程度上实现模块內的数据访问控制,可以在模块内的某些属性前添加单下划线_。这样,
    就无法使用语句"from 模块名 import *"导入相应的属性了,但是,使用语句"import 模块名"
    仍然可以导入相应的属性。
"""
Python

▽ 模块内的数据访问控制之特殊属性__all__

"""
    为了在某种程度上实现模块内的数据访问控制,还可以在模块内定义特殊属性__all__。这样,
    使用语句"from 模块名 import *"只能导入特殊属性__all__中定义的属性,但是,
    使用语句"import 模块名"仍然可以导入所有的属性。
"""

"""
    当使用语句"from 模块名 import *"导入属性时,
    如果既在模块内的某个属性前添加了单下划线_,又将这个属性定义在模块内的特殊属性__all__中,
    那么__all__比单下划线具有更高的优先级
"""
Python

Python进阶(21)—模块的特殊属性

◎脚本地址:https://github.com/anzhihe/learning/blob/master/python/practise/learn-python/python_advanced/module_attributes.py

安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/5445.html | ☆★★每天进步一点点,加油!★★☆ | 

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK