# 1. 模块

- 一个模块就是一个包含pytho代码的文件, 后缀名成是.py就可以,模块就是个python文件
- 为什么我们用模块
  - 程序太大,编写维护非常不方便,需要拆分
  - 模块可以增加代码重复利用的方式
  - 当做命名空间使用,避免命名冲突
- 如何定义模块
  - 模块就是一个普通文件,所以任何代码可以直接书写,
  - 不过根据模块的规范,最好在模块中编写以下内容
    - 函数(单一功能)
    - 类(相似功能的组合,或者类似业务模块)

- 如何使用模块
  - 模块直接导入
    - 假如模块名称直接以数字开头,需要借助importlib帮助
  - 语法
    import module_name
    module_name.function_name
    module_name.class_name

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
    - 案例 01, # 包含一个学生类, # 一个sayhello函数, # 一个打印语句 class Student(): def __init__(self, name="NoName", age=18): self.name = name self.age = age def say(self): print("My name is {0}".format(self.name)) def sayHello(): print("Hi, 欢迎来到图灵学院!") print("我是模块p01呀,你特么的叫我干毛")
 案例02, # 借助于importlib包可以实现导入以数字开头的模块名称 import importlib # 相当于导入了一个叫01的模块并把导入模块赋值给了tuling tuling = importlib.import_module("01") stu = tuling.Student() stu.say()

- import 模块 as 别名
  - 导入的同时给模块起一个别名
  - 其余用法跟第一种相同

 

import p01 as p stu = p.Student("yueyue", 18) stu.say()

- from module_name import func_name, class_name
  - 按上述方法有选择性的导入
  - 使用的时候可以直接使用导入的内容,不需要前缀

 

- `if __name__ == "__main__` 的使用
  - 可以有效避免模块代码被导入的时候被动执行的问题
  - 建议所欲程序的入口都以此代码为入口

 

# 2. 模块的搜索路径和存储

  - 什么是模块的搜索路径:
  - 加载模块的时候,系统会在那些地方寻找此模块
  - 系统默认的模块搜索路径

        import sys sys.path 属性可以获取路径列表 # 案例 p06.py
        import sys print( type(sys.path )) print( sys.path ) for p in sys.path: print(p)

- 添加搜索路径
  sys.path.append(dir)

- 模块的加载顺序
  1. 上搜索内存中已经加载好的模块
  2. 搜索python的内置模块
  3. 搜索sys.path路径

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄