当前位置: 首页 > news >正文

Python训练Day30

模块导入

知识点 回顾
  1. 导入官方三种手段
  2. 导入自定义/模块的方式
  3. 导入库/模块的核心逻辑找到根目录(python解释器的目录和终端的目录不一致)

1.1标准导入:导入整个库

# 方式1:导入整个模块
import mathprint("方式1:使用 import math")
print(f"圆周率π的值:{math.pi}")
print(f"2的平方根:{math.sqrt(2)}\n")

1.2 从库中导入特定项

当使用from语法从库中导入特定的函数或类时,这些函数或类就可以在您的代码中直接使用,不需要添加模块名作为前缀。因为在导入时没有包括模块的完整路径,前面也不能加上库名。

# 方式2:导入特定的函数或变量
from math import pi, sqrtprint("方式2:使用 from math import pi, sqrt")
print(f"圆周率π的值:{pi}")
print(f"2的平方根:{sqrt(2)}\n")

1.3  非标准导入:导入整个库

如下,●这将导入`math`模块中定义的所有公开函数和变量。

●和上述from同理,直接调用`sin()`、`cos()`等,而无需`math.`前缀。

from math import *print(f"圆周率π的值:{pi}")
print(f"2的平方根:{sqrt(2)}")

模块、包的定义

模块(Module)

- 本质:以 `.py` 结尾的**单个文件**,包含Python代码(函数、类、变量等)。

- 作用:将代码拆分到不同文件中,避免代码冗余,方便复用和维护。

包(Package)

在python里,包就是库

- 本质:有层次的文件目录结构(即文件夹),用于组织多个模块和子包。

- 核心特征:包的根目录下必须包含一个 `__init__.py` 文件(可以为空),用于标识该目录是一个包。

使用场景:

        若编写一个计算圆面积的代码并保存为 `circle.py`,这个文件就是一个模块。使用时通过 `import circle` 导入模块,调用其中的函数(如 `circle.calculate_area(5)`)。

        IDE(如 VSCode 或 PyCharm)通常会将你打开的项目文件夹设为“根目录”(或者说,运行时的工作目录)。Python 在导入模块时,会从这个根目录(以及其他一些标准位置和脚本所在的目录)开始查找。

场景1: main.py 和 circle.py 都在同一目录

项目根目录/
├── main.py
└── circle.py

- 模块导入 :因为它们在同一层, main.py 找 circle.py 很方便,直接喊一声名字就能找到。所以在 main.py 里可以直接写 from circle import calculate_area 来导入 circle.py 里的 calculate_area 函数。
- 运行方式 :直接在终端运行 python main.py 就行,就像在书架所在的房间里直接拿起 main.py 这本书开始读。

场景2: main.py 和 circle.py 都在根目录的子目录 model/ 下

项目根目录/
└── model/├── __init__.py   (推荐添加,将 model 目录标记为包)├── main.py└── circle.py

- 模块导入 :虽然它们在同一个格子里,但 main.py 找 circle.py 还是直接喊名字就行,所以导入语句还是 from circle import calculate_area 。
- 运行方式 :有两种方式。一是在项目根目录下运行 python model/main.py ,就像在书架所在的房间里告诉别人去拿 model 格子里的 main.py 这本书;二是先进入 model 文件夹( cd model ),再运行 python main.py ,就像自己走到 model 格子前拿起 main.py 读。

场景3: main.py 在根目录, circle.py 在子目录 model/ 下

项目根目录/
├── main.py
└── model/├── __init__.py   (必需添加,将 model 目录标记为一个可导入的包)└── circle.py

- 模块导入 : main.py 要找 circle.py 就不能只喊名字了,得说清楚在哪个格子里,所以导入语句要写成 from model.circle import calculate_area 。
- 运行方式 :直接在终端运行 python main.py 。但如果 circle.py 在更复杂的目录结构里,直接用 python model/main.py 可能会报错,这时可以用 python -m model.main ,Python 会把项目根目录加到搜索路径的开头,这样就能找到 model 文件夹里的 circle.py 了。

@浙大疏锦行

http://www.xdnf.cn/news/577405.html

相关文章:

  • 第3周作业-1层隐藏层的神经网络分类二维数据
  • MQTT报文介绍
  • Linux内存分页管理详解
  • Jsoup解析商品信息具体怎么写?
  • 阿里发布扩散模型Wan VACE,全面支持生图、生视频、图像编辑,适配低显存~
  • FreeCAD傻瓜教程-外螺纹的绘制,利用两个实体进行布尔运算来实现
  • 《P1433 吃奶酪》
  • MCU开发学习记录19* - CAN学习与实践(HAL库) - 定时传输、触发传输和请求传输(轮询与中断实现) -STM32CubeMX
  • Python 代码缩进与结构化编程:从基础到风格规范
  • Robotaxi新消息密集释放,量产元年来临谁在领跑?
  • [Java恶补day2] 49. 字母异位词分组
  • 【SW】从3D模型导出dxf图纸
  • 【算法专题十五】BFS解决最短路问题
  • 04_Prometheus监控docker容器(4)
  • 智慧社区新防线:华奥系AI技术如何让夏季安防“零隐患”
  • 如何在JavaScript中将数值转换为字符串并赋值给数组——以RuoYi-Vue项目为例
  • Redis Cluster动态扩容:架构原理与核心机制解析
  • 航电系统之航点跟踪系统篇
  • C++(27): 标准库 <iterator>
  • 逆向音乐APP:Python爬虫获取音乐榜单 (1)
  • Podman(Pod Manager)简介
  • 嵌入式STM32学习——串口USART 2.1(串口发送字符串和字符)
  • 应用分享 | 软件定义架构如何满足GNSS模拟测试的开放性需求?
  • JDK9~17语法新特性全览:Java语言的持续进化
  • Python数据可视化高级实战之二——热力图绘制探究
  • C++ 输出流格式控制
  • 起重的技术
  • wd软件安装
  • origin绘图之【如何将横坐标/x设置为文字、字母形式】
  • 升级SpringBoot2到3导致的WebServices升级