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

Python 训练营打卡 Day 30-模块和库的导入

模块和库的导入

1.1标准导入

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

1.2从库中导入特定项

from math import pi, sqrtprint("方式2:使用 from math import pi, sqrt")
print(f"圆周率π的值:{pi}")
print(f"2的平方根:{sqrt(2)}\n")

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

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

虽然 import math和 from math import *看起来都是导入了 `math` 模块,但它们在导入方式、作用域处理以及对命名空间的影响上有重要的区别
1. 命名空间的污染
`import math`:这种方法会将整个 `math` 模块导入到命名空间中,但是需要使用 `math.` 前缀来访问模块内的函数或变量。这种方式保持了命名空间的整洁,因为所有的 `math` 函数和变量都包含在 `math` 这个模块对象中
 `from math import *`:这种方法将 `math` 模块中的所有公开的函数和变量导入到当前的命名空间中,可以直接使用这些函数和变量而无需 `math.` 前缀。这种方式可能会导致命名空间污染,特别是当有多个模块都被这样导入时,很容易发生命名冲突
2. 明确性和可维护性
 `import math`:明确指出了函数和变量来源于 `math` 模块,这对代码的可读性和维护性都是有益的。其他阅读你代码的人可以清楚地看到每个函数的来源,这对大型项目和团队合作尤为重要
 `from math import *`:虽然代码看起来更简洁,但这种方法减少了代码的明确性。如果没有足够的上下文,很难判断一个特定的函数是来自 `math` 模块还是其他模块,尤其是当你导入了多个模块时

模块

本质:以.py结尾的单个文件,包含python代码(函数、类、变量等)
作用:将代码拆分到不同文件中,避免代码冗余,方便复用和维护

本质:有层次的文件目录结构(即文件夹),用于组织多个模块和子包
核心特征:包的根目录下必须包含一个__init__.py文件(可以为空),用于标识改目录是一个包

1.基本导入方法

import module_name  # 导入整个模块
import module_name as alias  # 导入模块并使用别名
from module_name import function_name  # 从模块导入特定函数/类
from module_name import *  # 导入模块所有内容(不推荐)

2.相对导入(在包内部使用)

from . import module_name  # 从当前目录导入
from .. import module_name  # 从上级目录导入
from .module_name import function_name  # 从当前目录模块导入特定内容

3.动态导入

module = __import__('module_name')  # 使用__import__函数
import importlib
module = importlib.import_module('module_name')  # 使用importlib模块

4.条件导入

try:import module_name
except ImportError:# 处理导入失败的替代方案pass

作业:自己新建几个不同路径文件尝试下如何导入

编写一个计算长方形面积的代码并保存在rectangle.py

def calculate_rectangle_area(length, width):return length * width# 测试用例
if __name__ == "__main__":print(calculate_rectangle_area(5, 3))  # 输出: 15print(calculate_rectangle_area(2.5, 4))  # 输出: 10.0

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

1.同目录下导入
from rectangle import calculate_area
# 或者
import rectangle
# 使用方式:
# area = calculate_area(length, width)
# 或者
# area = rectangle.calculate_area(length, width)
2.从子目录中导入(子目录名为:day30 )
from day30.rectangle import calculate_area
# 或者
from day30 import rectangle
# 使用方式同上
3.从上级目录导入
import sys
sys.path.append(".C:\Users\ggggg\Desktop\python\python60-days-challenge-master (2)\python60-days-challenge-master.")  
from rectangle import calculate_area

@浙大疏锦行

http://www.lryc.cn/news/2393018.html

相关文章:

  • 前端实现图片压缩:基于 HTML5 File API 与 Canvas 的完整方案
  • 【Docker管理工具】部署Docker管理面板DweebUI
  • 【后端高阶面经:架构篇】50、数据存储架构:如何改善系统的数据存储能力?
  • 编程之巅:语言的较量
  • STM32 通过 ESP8266 通信详解
  • Qt/C++开发监控GB28181系统/sip协议/同时支持udp和tcp模式/底层协议解析
  • 晨控CK-FR03与汇川H5U系列PLC配置MODBUS TCP通讯连接操作手册
  • 山海鲸轻 3D 渲染技术深度解析:预渲染如何突破多终端性能瓶颈
  • t014-项目申报管理系统 【springBoot 含源码】
  • 阻止H5页面中键盘收起的问题
  • 将 AI 解答转换为 Word 文档
  • AI 产品的 MVP 构建逻辑:Prompt 工程 ≠ 产品工程?
  • Go语言开发的GMQT物联网MQTT消息服务器(mqtt Broker)支持海量MQTT连接和快速低延时消息传输-提供源码可二次开发定制需求
  • JavaScript es6 语法 map().filter() 链式调用,语法解析 和常见demo
  • leetcode2221. 数组的三角和-medium
  • Express教程【001】:Express创建基本的Web服务器
  • asio之async_result
  • 代码随想录算法训练营 Day60 图论Ⅹ Bellmen_ford 系列算法
  • 独立机构软件第三方检测:流程、需求分析及电商软件检验要点?
  • Java构建Tree并实现节点名称模糊查询
  • shadcn/ui
  • 华为FreeArc能和其他华为产品共用充电线吗?
  • [网页五子棋][匹配模式]创建房间类、房间管理器、验证匹配功能,匹配模式小结
  • 实验设计与分析(第6版,Montgomery)第3章单因子实验:方差分析3.11思考题3.7 R语言解题
  • 【知识点】第2章:Python程序实例解析
  • 从解决一个分享图片生成的历史bug出发,详解LayoutInflater和View.post的工作原理
  • Ubuntu 22.04 上使用 Docker 安装 RagFlow
  • 每日Prompt:指尖做画
  • Python打卡训练营day40——2025.05.30
  • Java八股-数据类型转换有哪些?类型互转会有什么问题?为什么用bigDecimal 不用double ?自动装箱和拆箱?包装类?