zoukankan      html  css  js  c++  java
  • 模块

    使用模块的原因:
      目前使用函数来编写代码虽然大幅度降低了代码冗余,并且组织结构清晰多了,
    但是随着项目功能的增加如果还将代码全放一个文件中,将出现以下问题
      1.维护性差
      2.函数太多结构也不清晰,可读性差
      3.对于相同功能的函数,如果在不同文件中都要使用,就只能复制粘贴,又出现了重复代码

    什么是模块
    模块就是一堆功能的集合体,以py文件的形式存在
    简单的就是具备一堆函数的py文件.
    模块的分类
    1.自定义模块(重点学习),包含第三方模块(学习用法即可)
    2.内置模块 例如time,os(主要学怎么使用)
    3.经过编译后的C或C++库,以DLL形式存在(忽略吧)
    4.包(本质就是一个文件夹 其中包含了一堆模块)

    import 用于导入一个模块
    会立即执行模块中的代码
    导入模块时发生了什么
    1.创建一个名称空间
    2.执行模块中的代码,将内部名称与值的对应关系存储到名称空间中
    3.在当前执行文件创建一个名字 该名字指向被导入模块的名称空间

    注意:模块之间的名称空间是相互独立的 (所以在执行文件中修改变量不会改变模块中的值)
    模块中的代码仅在第一次被导入时执行 (因此不需要重复导入同一个模块)

    # pycharm会自动帮你检测 项目根目录下的模块
    # 可以给你一些提示,但是对于不在跟目录下的,它可能会报错
    # 这是pycharm 的问题 不影响执行

    导入模块的写法:
      1 import 导入模块
        import 模块

        模块.fun()

      2 fron导入模块
        
    # 使用from 导入时 会把import后的名字直接放入当前名称空间
    # 使用时可以不用写前缀
    # 注意:可能会与当前名称空间中的名字冲突
    # 如果真的冲突了 会就近查找 谁最后定义我就用谁
    # from functools import reduce
    # print(reduce)
    
    # from tools import  func
    # print(func)
    
    # func = 1
    # print(func)
    
    # 取别名
    # from tools import func as f
    # print(f)
    
    # 一次导入多个
    # from tools import func,func1
    # print(func,func1)
    # from tools import func as f1,func1 as f2
    
    # 一次导入全部
    # *通配符 会将模块中华所有名字全部导入
    # 极容易出现名称冲突,慎用
    from tools import *
    print(func)
    print(func1)
    # 该特殊变量 用于指定哪些名字可以被*导入
    __all__ = ["func1"]









  • 相关阅读:
    JSP实现数据传递(web基础学习笔记三)
    Spring Boot 参数校验
    Spring AOP实践
    Spring AOP介绍
    2018年春节
    InnoDB索引
    Kafka基本知识回顾及复制
    Kakfa消息投递语义
    Kafka Consumer
    Kafka Producer Consumer
  • 原文地址:https://www.cnblogs.com/Hale-wang/p/10289383.html
Copyright © 2011-2022 走看看