自定义模块
自定义模块被其他模块导入时,其中的可执行语句会立即执行
import a
import time 的时候,运行 啥也不显示,说明time模块中没有可执行模块,并不代表没有类和定义函数
python中提供了一种可以判断自定义模块是属于开发阶段还是使用阶段
__name__ # 脚本方式运行时, 固定的字符串: __main__
# 而以导入方式运行时, 就是本模块的名字(在另一个文件夹中import a 然后运行)
print(__name__)
(venv) C:\work\python>python 04bibao.py
__main__
(venv) C:\work\python>python 04bibao.py
a
__name__属性的使用:
在脚本方式运行时,__name__是固定的字符串__main__
在模块方式导入时,__name__就是本模块的名字了(a,b,cd任意自己设置的xxx.py)
系统导入模块的路径
- 内存导入: 如果之前成功导入过某个模块, 直接使用已经存在得模块
- 内置路径中: /python/py37/Lib中
- 第三方模块: python/py37/lib/site-packages
- sys.path: sys模块用c语言写的,在解释器中内置,找不到模块
(venv) C:\work\python>python 04bibao.py
['C:\\work\\python', 'C:\\Users\\Sala\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip', 'C:\\Users\\Sala\\AppData\\Lo
cal\\Programs\\Python\\Python37\\DLLs', 'C:\\Users\\Sala\\AppData\\Local\\Programs\\Python\\Python37\\lib', 'C:\\Users\\Sala\\A
ppData\\Local\\Programs\\Python\\Python37', 'C:\\work\\venv', 'C:\\work\\venv\\lib\\site-packages', 'C:\\work\\venv\\lib\\site-
packages\\setuptools-39.1.0-py3.7.egg', 'C:\\work\\venv\\lib\\site-packages\\pip-10.0.1-py3.7.egg']
import os
import sys
__file__ 当前路径
# os.path.dirname找到父路径
sys.path.append(os.path.dirname(__file__)+'/aa')
import a
print(a,a)