zoukankan      html  css  js  c++  java
  • 模块初识

    模块初识

    1. 储存着很多常用功能的py文件就是一个模块.模块就是一系列常用功能的集合体

    2. 为什么要使用模块?

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

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

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

      • 第三方模块,第三方库,各种python大神写的非常好用的模块,必须通过pip install指令安装的模块,比如Django等,大概有6000多个

      • 自定义模块,我们自己定义的一些模块

        # 示例
        # 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 模块名

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

            # 示例
            # 当前是 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]
          
        • 引用模块中的函数,如果此函数用到了一些变量,这些变量还是从此模块空间中寻找

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

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

  • 相关阅读:
    September 29th 2017 Week 39th Friday
    September 28th 2017 Week 39th Thursday
    September 27th 2017 Week 39th Wednesday
    September 26th 2017 Week 39th Tuesday
    September 25th 2017 Week 39th Monday
    September 24th 2017 Week 39th Sunday
    angular2 学习笔记 ( Form 表单 )
    angular2 学习笔记 ( Component 组件)
    angular2 学习笔记 ( Http 请求)
    angular2 学习笔记 ( Router 路由 )
  • 原文地址:https://www.cnblogs.com/maqian/p/11905260.html
Copyright © 2011-2022 走看看