模块的内置方法–Python提高班
admin
2023-07-31 01:49:26
0

这期的话题有点简单, 整理下常见的模块内置方法

刚开始学Python的时候, 看到if __name__ == \'__main__\': main()就不明觉厉了, 一直好奇__name__这货到底是个什么东东

实际上, __name__是Python中模块的内置属性, 除此之外, 经常用到的还有__file__, __doc__, __all__, __package__等等

__name__

__name__是模块内置的一个属性, 一般如果模块是被引用的时候, 它的值是模块名, 如果这个python文件被直接运行, 那么它的值是\'__main__\'

>>> __name__
\'__main__\'
>>> import os
>>> os.__name__
\'os\'

所以我们写一个脚本的时候,通过判断__name__来确定脚本是被引用, 还是被直接运行

if __name__ == `__main__`:
    main()

__file__

被引用模块文件的路径

>>> import os
>>> os.__file__
\'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.pyc\'

__doc__

模块的注释文档

class MyClass:
    \"\"\"这是MyClass的注释, 
    调用下面myClass.__doc__的时候会返回这段内容\"\"\"

    def funcA(self):
        \"\"\"这是funcA的注释文档\"\"\"
        return \"hello\"

myClass = MyClass()

调用myClass.__doc__会返回MyClass的注释文档, myClass.funcA.__doc__会返回funcA的注释文档

如果执行help(MyClass), 所看到的文档实际就是DocStrings收集该类下所有的注释生成的文档

__all__

当你写一个Python的模块的时候, 一般在__init__.py中指定__all__来表示当这个模块被import * from xxx的时候, 有哪些模块会被import进来,

当然, 我们推荐尽量不使用import *

__package__

__package__主要是为了相对引用而设置的一个属性, 如果所在的文件是一个package的话, 它和__name__的值是一样的, 如果是子模块的话, 它的值就跟父模块一致

比如 modA/modB/aa.py__name__的值是modA.modB.aa __package__modA.modB
modA/modB/__init__.py__name____package__的值都是modA.modB

参考: The import system

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python查找阿姆斯特朗数 题目解释 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...