模块的定义及导入

模块:
 1. 定义:本质就是.py结尾的python文件
     从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能)。
     文件名:test.py对应的模块名就是test
    
    
 2. 导入方法:
  import module_name
  import modele_name1, module_name2
  from module_name import *    不建议这么用
  from module_name import m1 as login
  from module_name import m1 m2 m3  导入多个
 
 3. 导入模块的本质:
  将模块解释了一次后封装赋值给一个变量。
  
  
 4. 包:本质就是一个文件夹(一个目录),但必须带一个__init__.py文件
   用来从逻辑上组织模块的
   
   导入包就是解释其下的__init__.py
   
 5. import 模块时,顺序是: 当前路径 => sys.path
 
  import sys, os
  
  print(sys.path)
  print(__file__)
  print(os.path.abspath(__file__))
  print(os.path.dirname(os.path.abspath(__file__)))
  
  输出: 
  ['D:\Python3\python_project\Project_1\Day-06-21', 'D:\Python3\python_project\Project_1', 'D:\Python3\python_project\Project_1\venv\Scripts\python36.zip', 'C:\Users\brace.li\AppData\Local\Programs\Python\Python36-32\DLLs', 'C:\Users\brace.li\AppData\Local\Programs\Python\Python36-32\lib', 'C:\Users\brace.li\AppData\Local\Programs\Python\Python36-32', 'D:\Python3\python_project\Project_1\venv', 'D:\Python3\python_project\Project_1\venv\lib\site-packages', 'D:\Python3\python_project\Project_1\venv\lib\site-packages\setuptools-39.0.1-py3.6.egg', 'D:\Python3\python_project\Project_1\venv\lib\site-packages\pip-9.0.3-py3.6.egg', 'C:\Program Files\JetBrains\PyCharm 2018.1.3\helpers\pycharm_matplotlib_backend']
  D:/Python3/python_project/Project_1/Day-06-21/main.py
  D:Python3python_projectProject_1Day-06-21main.py
  D:Python3python_projectProject_1Day-06-21

 6. 导入包就只是允许了__init__.py(from . import sayhi)  .表示是init的相对路径
  所以要调用包里面的模块,是找不到的。
  
  要想直接导入包,就能只能调用其下的模块,就必须在__init__.py中import所有模块
  
 7. 模块的分类:
  1. 标准库:python自带的;
  2. 开源模块:实现谋一个功能,放在getHUB里面;
  3. 自定义模块
原文地址:https://www.cnblogs.com/brace2011/p/9226332.html