网站首页 > 基础教程 正文
什么是模块?
一个函数用来封装一个功能,但是,一个软件的设计不可能都只写在一个文件里面,将一些常用功能放到一个文件中,就是模块。模块的本质就是一个.py文件。
为什么要使用模块?
- 将程序分成一个个的功能文件,更加方便管理以及重复使用
- 提升开发效率,避免重复造轮子
模块的分类
- 内置模块:比如之前学习过的time、random模块
- 第三方模块:比如pygame模块,需要自己使用pip安装 pip install pygame
- 自定义模块,比如起个名字叫做ayst.py
导入模块(import 模块名)
每个模块都是一个独立的命名空间,定义在这个模块中的函数,把这个模块的命名空间当做全局命名空间,两个不同模块中的同名变量不会发生冲突
模块第一次被导入后就将模块加载到内存中,重复导入模块会直接引用内存中已经加载好的结果
模块导入方式
- import 模块名
- import 模块名 as 新名称
- from …… import ……
模块文件中的测试代码
一个模块中的功能也是需要进行测试的,但是,模块被导入时,就会自动执行模块中的print语句
- 脚本:直接作为文件执行 __name__ 等于 __main__
- 模块:被导入执行 __name__ 等于 模块名
class People:
def __init__(self, name, gender, age):
self.name = name
self.gender = gender
self.age = age
a = 1
b = "hello"
print("哈哈哈,我导入就被执行了")
# 内置全局变量 __name__
print(__name__)
if __name__ == "__main__":
print("只有以脚本形式运行我才会执行")
内置模块:sys模块
与解释器交互的接口
- sys.argv 传递命令行参数
- sys.version 获取python解释器版本信息
- sys.platform 返回操作系统平台名称
- sys.modules Python解释器启动时加载到内存中的模块
- sys.path 返回模块的搜索路径
import sys
print(sys.version)
print(sys.platform)
print(sys.path)
print(sys.modules)
print(sys.argv)
print(sum([int(i) for i in sys.argv[1:]]))
执行代码:python3 demo.py 1 2
模块的搜索路径
- 内存中已经加载的模块 sys.modules
- 内置模块
- 依次查找sys.path列表中的模块
注:模块名不可以与系统内置模块重名
我们自定义的模块如果全部放在site-packages文件夹下面,时间久了会非常混乱,因此可以创建一个文件夹专门存储模块
import sys
sys.path.append('D:\cat')
import hello
print(hello.info)
包:什么是包?
- 包就是一个包含__init__.py的文件夹,创建包的目的就是为了将文件组织起来
- Python3中,包下面没有__init__.py,导入包不会报错,而Python2中会报错
- 创建包就是为了导入,而不是直接运行
导入规则
- 凡是导入时带点的,点的左边一定是包的名字
- import cat
- import cat.examples.test
- import cat.examples.test as t
- from cat.db import register
- from cat.api import *
注:__all__ = ["manage", "versions"]可以限定导入的模块
文件中代码:
cat/__init__.py:
from . import api
print("我是包下面的init文件")
api:
api/__init__.py:
from . import run
print("我是api下面的init文件")
__all__ = ["manage", "versions"]
api/manage.py:
def f1():
print("I am api.manage")
api/run.py:
def f1():
print("I am api.run")
api/versions.py:
def f1():
print("I am api.versions")
db:
db/__init__.py:
print("我是db下面的init文件")
db/register.py:
def f1():
print("I am db")
相关推荐
- 上一篇: Python因模块而强大,自己如何编写模块
- 下一篇: Python中的模块与包
猜你喜欢
- 2024-11-22 Python 语言学习要点记录8-模块
- 2024-11-22 python-模块和包
- 2024-11-22 python组织和管理代码:模块和包、子模块和子包概念及举例
- 2024-11-22 每个 Python 开发人员需要掌握的 5 个基本内置模块
- 2024-11-22 一文提升你的编程能力,Python能力提升系列——加载模块
- 2024-11-22 一文提升你的Python能力——定义模块、说明模块和测试模块
- 2024-11-22 一、Python 模块简介
- 2024-11-22 Python 中引入一个文件,模块的概念
- 2024-11-22 Python基础-模组(类库、模块)
- 2024-11-22 python编程系列教程:9-模块的使用
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)