python-模块、包

1、什么是模块?

  1.一个.py就是一个模块。

  2.有什么好处?  

    提高可维护性;避免函数变量名冲突。

  3.如何分类:  

    内置            ——Python安装时就已经自带,如:sys 、os....

       第三方开源 ——世界各地开发者贡献的py文件,通过 pip install 安装

       自定义         ——自己写的py文件

      注意:导入模块即相当于执行了模块。

  4.如何调用的?

     import module :直接导入模块

   from module import xx :在模块中导入某个函数   

   from module import xx as xx :导入某个函数时并且把他重命名,方便以后调用时简写。

   from module.xx.xx import * :导入全部的函数

  5.模块的查找路径: ‘’,从当前py的目录找——》从python自带和第三方库的路径找

    只要在一个目录下匹配到,就立刻导入,不再往后找。

  6.开源模块的安装:

    pip install命令,安装好了,用import xx 就可以调用。

2. 什么是包?

  1.包——就是把相关功能的.py文件放在同一个文件夹下,这个文件夹就叫包。

  2.不同包之间的模块要怎样导入?

    form 包名 import xx

  3.包的路径下要有(__init__.py)这个文件,来标识这个文件夹是一个包。

3.包的导入

  跨包导入

    现在想在manage.py 导入 crm目录下views.py

    

from crm import view

    为什么能直接导入? 由于环境变量里已经添加到‘’,这个代表了把当前文件夹的路径添加到环境变量里,所以编译器可以直接导入。    

  跨模块导入

    现在想在crm下的view.py 导入proj下的setting.py ,要怎样做?

      1.如果直接在view.py下直接写from proj import setting

      2.运行的话会报错,说找不到模块。

      3.为什么?  是因为编译器会从在当前路径下找proj这个目录。

      4.可以通过添加环境变量,把路径添加到环境变量中就可以了。

 在view.py里添加下面的语句

import os, sys

# 1.通过__file__那个views.py文件的绝对路径,
# 2.通过os.path.abspath(__file__)获得views.py文件真正的绝对路径
# 3.通过os.path.dirname命令往上走一层,获得crm的路径,
# 4.然后把绝对路径添加到环境变量就可以从proj导入settings.py 模块
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))  # 获取真正的绝对路径
sys.path.append(BASE_DIR)
print(sys.path)
from proj import setting 

  绝对导入、相对导入

 绝对导入:

 把路径加入到环境变量列表,这样叫绝对路径的导入。

  

  

相对导入:

通过使用..来导入

 

有两点要求:

1.必须有__init__.py来标识这个文件夹是一个包,而不是普通文件夹。

2.主入口程序不能为顶层的模块。

    

 

 

 

 

 

 

 

  

 

 

     

        

  

posted @ 2018-03-27 22:58  OYxing  阅读(86)  评论(0编辑  收藏  举报