• 一、模块
    • 1、模块就是已经写好的一组功能的集合。别人写好的的函数、变量或方法放在一个文件之中(这个文件可以被我们直接使用),这个东西就是一个模块。
    • 2、模块一般分为三种类型
      • 1、。py结尾的,这个就是一个使用python写好的文件
      • 2、。dll结尾的,这是一个使用c语言写好的模块,我们也可以调用
      • 3、。zip结尾,我们可以使用压缩文件中的模块
    • 3、创建一个py文件,给他起一个符合变量命名规则的名字,这个名字就是一个模块名,导入一个模块就是执行一个模块。
    • 4、import的命名空间
      • 1、模块和当前文件在不同的命名空间中
      • 2、模块的导入课程
        • 1、找到这个模块
        • 2、判断这个模块是否已经被导入(通过sys.modules,进行判断)
        • 3、如果没有被导入过
          • 1、创建一个属于这个模块的命名空间
          • 2、让模块的名字指向这个命名空间
          • 3、执行这个模块的代码
    • 5、给模块取别名 import my_modules as m 
    • 6、模块的导入顺序:内置模块>扩展(第三方)模块>自定义模块
    • 7、from。 import
      • 1、需要使用哪个文件中的哪个变量(函数),直接将它调用过来(from。 mymodule。import name,我们便可以直接使用name了,但是唯一一点就是import谁便只能用谁
      • 2、from import也只会执行一次,若已经成功被导入便不会在次执行
      • 3、如果我们这样来写. from my_module import *,那么就代表导入模块之中的所有名字开头不是下划线的变量,但是我们可以在模块之中定义列表__all__=[""],这个列表只能限制*号,只有放入列表的模块才能被调用
    • 8、模块引用中的情况
      • 1、两个模块之间不能被循环调用,即导入方向不能成环(模块a中调用了模块b,模块b中又调用了模块a)
      • 2、模块的加载,模块在已经被导入了之后,对模块进行修改,无法生效,但我们可以使用importlib模块中的reload函数重新加载一次模块
      • 3、将模块当成脚本使用
        • 1、脚本文件和模块文件最大的区别就是脚本文件是被直接执行的
        • 2、我们可以在一个文件之中加入__name__变量,该变量有一个最大的特色,就是该变量在被直接执行时等于__main__,但是当这个文件在被当成模块调用时等于模块名。
        • 3、故我们可以加入代码块,if __name__=="__main__",代码块:即当该py文件只有被当成脚本文件执行时,才会执行该代码(输入mian+Tab可以直接出现___main___)
    • 9、模块的搜索路径:我们出现模块无法成功调用的情况时,需要将模块的路径导入sys.path之中(append)
  • 二、包
    • 1、包(python package)和普通文件夹最大的区别就是包在创建时就有了一个__init___.py文件,通俗的讲他就是几个模块的集合。
    • 2、包和模块的调用没有太大的区别
      • 1 import. glance.api.policy(这就是从包中调用模块,glance 和 API 都是包)
      • 2 import glance.api.policy as XX,同样可以为调用的模块取别名
      • 3 from glance.api import policy
      • 4 from galnce.api.policy import get 
      • 5 单独的直接调用一个包不起作用,就相当于运行了它旗下的__init__文件,但是无法直接使用其他的模块,需在进行调用
      • 6模块的调用分为绝对导入和相对导入,目前使用不多,详细见https://www.cnblogs.com/Eva-J/articles/7292109.html
posted on 2018-08-23 20:24  哈尔斯塔特  阅读(64)  评论(0)    收藏  举报