Python自定义模块¶
- 几种常见的模块导入方式
- 模块导入的搜索机制sys.path
- 缓存区sys.modules、pyc以及reload
- 查询模块路径__file__
- 模块中__name__的作用
- 模块帮助文档docstring(__doc__)
几种常见的模块导入方式
Python允许开发者通过导入外部程序块的方式来扩展自己的程序,这些可以被导入(import)并使用的程序块就是模块(module)
模块的基本单元是一个.py文件,Python的包在广义上也被称为模块(module)
以内置模块datetime为例
import datetime
import datetime as dt
print(dt.datetime.now())
from datetime import datetime
print(datetime.now())
from datetime import *
from datetime import datetime as ddt
print(ddt.now())
模块导入的搜索机制sys.path,模块导入搜索路径是由多个目录路径组成的列表,第一个路径默认是当前模块所在的路径,模块搜索路径 = 当前工作路径 + sys.path列表内的所有路径。
- 何为环境变量PYTHONPATH?
- sys.path在环境变量中起什么作用?
- sys.path添加路径的两种方案以及区别?
- DCC软件如何管理sys.path?
import sys
path in sys.path or sys.path.insert(0, path)
- 缓存区sys.modules、pyc以及reload
- import可以是属性方法类型,reload只能是模块
- 查询模块路径__file__
__file__属性是一个Python模块隐藏的默认属性,它描述了一个模块的完整路径。
- 模块中__name__的作用
__name__属性是所有Python模块自带的一个隐藏属性,用于标注模块在不同执行环境下的名称。当一个模块作为主模块运行(被Python解释器直接运行)时,__name__的值是”__main__”,否则,该模块的__name__属性值为此模块的名称。
- 模块帮助文档docstring(__doc__)
双三引号,docstring写在什么位置? help()内置函数与docstring的关系?
myFirstModule.py
# -*- coding: utf-8 -*-
#!/usr/bin/python
"""
this is a doc string
"""
a = 5
def foo():
print("this is foo function")
print("hello, this is my first module")
if __name__ == "__main__":
print("this string is under main")
main.py
# -*- coding: utf-8 -*-
#!/usr/bin/python
print("before import")
import myFirstModule as mfm
print("after import")
print("my first module attr a is: ", mfm.a)
print("my first module method foo is: ", mfm.foo)
print(mfm.__name__)
print(mfm.__file__)
print(mfm.__doc__)