跳转至

模块

什么是模块?

模块就是一系列功能的集合体,分为三大类

  • 内置模块
  • 第三方模块
  • 自定义模块(主要学习这部分的内容)

    • 可以将程序的各部分功能提取出来放到一模块中为大家共享使用
    • 好处是减少了代码冗余,程序组织结构更加清晰

模块的类型?(了解)

四种类型

  • 一个python文件就是一个模块,文件名m.py,而模块名叫m
  • 已被编译为共享库或DLL的C或C++扩展
  • 把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,文件夹也可以称为包)
  • 使用C编写并链接到python解释器的内置模块

Python文件的两种用途?

  • 第一种:当成一个脚本直接来运行
  • 第二种:当作模块倒入

import 导入模块

建议一行导入一个模块,不建议一行导入多个模块

导入顺序规范:

  • 首选导入python的内置变量
  • 第三方模块
  • 自定义模块

!!! warning 命名规范: - 在 python3 中定义模块的命名应该采用纯小写+下划线的风格(在 python2 中有一些模块的命名是驼峰体)

模块别名

  • import ... as ...
  • import module as m (相当于m=module,使用场景: 当模块名字较为长就可以使用别名)

执行py文件与导入py文件的区别是什么?

  • print(name),当做 module.py 文件被执行时候,这个值为__main__.
  • print(name),当做 module.py 文件被模块导入时候,这个值为 module 模块名字

示例:

print(__name__) # 没有导入模块__name__ == '__main__'. 导入之后等于模块名称

if __name__ == '__main__':
    get()
    change()
else:
    pass

优缺点

import 导入模块在使用时必须加前缀 ”模块.”

  • 优点: 肯定不会和当前名称空间的名字冲突
  • 缺点: 加前缀显得很麻烦

from...import.. 导入

import 导入模块在使用时不需要必须加前缀 ”模块.”

  • 优点: 代码更精简
  • 缺点: 容易与当前的名称空间混淆

补充

  • from module import * (导入模块中所有名字)
  • from mudule import m1,m2,,m3 (可以这么写,但是不推荐)

别名

  • from module import foo as f 给 foo 起一个别名

模块查找优先级

优先级顺序:

  • 内存
  • 硬盘
import sys
print(sys.path) # 其中第一个文件夹永远都是 python 代码执行文件的文件夹

了解:

print(sys.modules) 查看内存中加载的模块

添加模块路径

# 将 module.py 的文件夹添加到环境变量中
sys.path.append(r'/Users/beiyiwangdejiyi/Desktop/lixie-work/python_lesson/module/modules')
import module

编写模块规范

#!/usr/bin/env python #通常只在类unix环境有效,作用是可以使用脚本名来执行,而无需直接调用解释器。

"The module is used to..." #模块的文档描述

import sys #导入模块

x=1 #定义全局变量,如果非必须,则最好使用局部变量,这样可以提高代码的易维护性,并且可以节省内存提高性能

class Foo: #定义类,并写好类的注释
    'Class Foo is used to...'
    pass

def test(): #定义函数,并写好函数的注释
    'Function test is used to…'
    pass

if __name__ == '__main__': #主程序
    test() #在被当做脚本执行时,执行此处的代码

以下是一个关于模块的目录结构

$ tree code
code
└── module
    ├── main.py # 启动文件
    └── mymodule.py # 自己写的模块

模块中会写一些自定义的函数功能.

$ cat code/module/mymodule.py
def greet(name):
    return f"Hello, {name}!"

pi = 3.14159

启动文件中,直接 import 模块名称,就可以调用模块中的函数方法

$ cat code/module/main.py
import mymodule

print(mymodule.greet("Barry"))
print(mymodule.pi)

回到页面顶部