模块初识

模块初识

  1. 储存着不少经常使用功能的py文件就是一个模块.模块就是一系列经常使用功能的集合体python

  2. 为何要使用模块?app

    • 组织结构更清晰,方便管理,易维护
    • 拿来主义,节省代码,大大提高开发效率
  3. py文件两种功能:函数

    • 执行代码(承载代码),俗称脚本
    • 模块(被引用,被执行)
  4. 模块的分类code

    • 内置模块,也叫标准库,此类模块就是python 解释器提供的,time,os等200多种接口

    • 第三方模块,第三方库,各类python大神写的很是好用的模块,必须经过pip install指令安装的模块,好比Django等,大概有6000多个ip

    • 自定义模块,咱们本身定义的一些模块内存

      # 示例
      # haha.py
      name = '刘德华'
      lst = [1, 2, 3]
      def fucn():
         print('haha模块', name)
      def change():
         global name
         name = '张学友'
      def lst_append():
          lst.append(4)
      # 这个haha.py文件就是一个模块
  5. 引用模块的方法开发

    1. import使用:import 模块名pip

      • 引用模块会作三件事:
        1. 建立一个以模块名命名的名称空间,相似全局名称空间(这里保存的是变量与值的对应关系)
        2. 执行这个名称空间(即导入的模块)里面的代码,将其加载到内存.(若是屡次导入,则只有第一次会执行代码)
        3. 经过此模块名.的方式引用模块里面的内容(变量 函数名 类名等).这个名字和变量名没有区别,都是'第一类的'.而且模块中定义的名字来自两个彻底不一样的地方
      • 被导入的模块有独立的名称空间
        • 每一个模块都是一个独立的名称空间,定义在这个模块中的函数,把这个模块的名称空间当作全局名称空间,这样咱们在编写本身的模块时,就不用担忧咱们定义在本身模块中的全局变量会在被导入时,与使用者的全局变量冲突.class

          # 示例
          # 当前是 hello.py
          import haha
          name = '刘亦菲'
          print(name) # 刘亦菲
          print(haha.name) # 刘德华
        • 为导入的模块起个别名

          # 方便书写
          # 简化代码,能够用于统一接口
          # 当前是 hello.py
          import haha as wow # as后面是想改的名字
          print(wow.name) # 刘德华
        • 引入多个模块

          • 推荐多行逐个导入: 易于阅读 易于编辑 易于搜索 易于维护
    2. from ... import ... 使用: from 模块名 import 变量名

      • from ... import ...引入时,也会开辟一个以模块名命名的名称空间,可是会把咱们想要引入的具体内容(类如变量)的对应关系复制到当前执行文件的全局名称空间中. 注意: 由于复制的是对应关系,因此比较像浅拷贝.

        # 例一
        name = '刘亦菲'
        from haha import name
        print(name) # 刘德华
        # 例二
        from haha import name  # 把模块空间内name的对应关系复制了过来.
        from haha import change # 修改模块空间内的name,可是name是不可变的数据类型,直接改变了指向.
        print(name) # 刘德华
        -----------------------------------------------
        # 例三
        from haha import lst # 把模块空间内lst的对应关系复制了过来
        from haha import lst_append # 修改模块空间内的lst,执行文件全局空间中的lst与模块空间内的lst指向同一个内存地址
        print(lst) # [1, 2, 3, 4]
      • 引用模块中的函数,若是此函数用到了一些变量,这些变量仍是今后模块空间中寻找

      • 优势: 使用起来方便了(不用模块名. ,而是直接使用)

      • 缺点: 容易与当前执行文件产生覆盖效果,至关于变量的从新赋值

相关文章
相关标签/搜索