模块

使用模块的原因:
  目前使用函数来编写代码虽然大幅度降低了代码冗余,并且组织结构清晰多了,
但是随着项目功能的增加如果还将代码全放一个文件中,将出现以下问题
  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"]









原文地址:https://www.cnblogs.com/Hale-wang/p/10289383.html