自定义模块

自定义模块被其他模块导入时,其中的可执行语句会立即执行

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)