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

article/2025/7/13 7:57:34

模块和库的导入

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.hkcw.cn/article/bQtDFBgkbV.shtml

相关文章

ToolsSet之:渐变色生成工具

ToolsSet是微软商店中的一款包含数十种实用工具数百种细分功能的工具集合应用,应用基本功能介绍可以查看以下文章: Windows应用ToolsSet介绍https://blog.csdn.net/BinField/article/details/145898264 ToolsSet中Media菜单下的Gradient Color工具是一…

智能守护电网安全:探秘输电线路测温装置的科技力量

在现代电力网络的庞大版图中,输电线路如同一条条 “电力血管”,日夜不息地输送着能量。然而,随着电网负荷不断增加,长期暴露在户外的线路,其线夹与导线在电流热效应影响下,极易出现温度异常。每年因线路过热…

云服务器如何自动更新系统并保持安全?

云服务器自动更新系统是保障安全、修补漏洞的重要措施。下面是常见 Linux 系统(如 Ubuntu、Debian、CentOS)和 Windows 服务器自动更新的做法和建议: 1. Linux 云服务器自动更新及安全维护 Ubuntu / Debian 系统 手动更新命令 sudo apt up…

Spring Advisor增强规则实现原理介绍

Spring Advisor增强规则实现原理介绍 一、什么是 Advisor?1. Advisor 的定义与本质接口定义: 2. Advisor 的核心作用统一封装切点与通知构建拦截器链的基础实现增强逻辑的灵活组合 二. Sprin当中的实现逻辑1 Advisor 接口定义2 PointcutAdvisor 接口定义…

vscode实时预览编辑markdown

vscode实时预览编辑markdown 点击vsode界面,实现快捷键如下: 按下快捷键 CtrlShiftV(Windows/Linux)或 CommandShiftV(Mac)即可在侧边栏打开 Markdown 预览。 效果如下:

为什么建立 TCP 连接时,初始序列号不固定?

主要原因有两个方面: 很大程度上避免历史报文被下一个相同四元组的 TCP 连接接收问题(主要方面)防止黑客伪造相同序列号的 TCP 报文被接收 接下来,详细说说第一点 假设每次建立 TCP 连接时,客户端和服务端的初始序列…

偏序集、哈斯图、Dilworth

标题 偏序哈斯图Dilworth最少的不上升子序列与最长上升子序列P1020 偏序 偏序关系满足&#xff1a;自反性、反对称性和传递性 便于理解引入哈斯图 哈斯图 对于元素 x&#xff0c;如果 x<y 且不存在 z 使得 x<z<y&#xff0c;那么 y 就是 x 的覆盖元素&#xff0c;在…

企业知识库问答系统避坑指南:检索优化与生成一致性解决方案

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 一、智能问答系统架构设计 1.1 整体系统架构 graph LR A[用户输入] --> B(前端界面) B --> C{查询类型} C -->|文本| D[文本处理模块] C -…

2025年全国青少年信息素养大赛复赛C++算法创意实践挑战赛真题模拟强化训练(3)

2025年全国青少年信息素养大赛复赛C算法创意实践挑战赛真题模拟强化训练&#xff08;3&#xff09; 四位数密码 【题目描述】 情报员使用4位数字来传递信息&#xff0c;同时为了防止信息泄露&#xff0c;需要将数字进行加密。数据加密的规则是: 每个数字都进行如下处理&…

爬虫知识零基础到入门-数据解析-css, xpath(三)

数据解析 前言一、常见数据类型1.结构化数据2.半结构化数据3.非结构化数据二、HTML概述1.HTML骨架格式2.HTML标签关系三、CSS选择器1.标签选择器2.类选择器3.ID选择器4.组合选择器5.后代选择器6.伪类选择器7.属性提取器8.小结四、xpath节点提取1.什么是xpath2.认识xml1.html和x…

56、Ocelot 概述

Ocelot 是一个基于 .NET Core 开发的开源 API 网关&#xff0c;主要用于微服务架构中&#xff0c;为多个后端服务提供统一的访问入口。它通过集中化管理请求路由、认证、限流、负载均衡等功能&#xff0c;简化了客户端与后端服务之间的交互&#xff0c;同时增强了系统的安全性和…

使用el-input数字校验,输入汉字之后校验取消不掉

先说说复现方式 本来input是只能输入数字的&#xff0c;然后你不小心输入了汉字&#xff0c;触发校验了&#xff0c;然后这时候&#xff0c;你发现校验取消不掉了 就这样了 咋办啊&#xff0c;你一看校验没错啊&#xff0c;各种number啥的也写了,发现没问题啊 <el-inputv…

Oracle数据库性能优化的最佳实践

原创&#xff1a;厦门微思网络 以下是 Oracle 数据库性能优化的最佳实践&#xff0c;涵盖设计、SQL 优化、索引管理、系统配置等关键维度&#xff0c;帮助提升数据库响应速度和稳定性&#xff1a; 一、SQL 语句优化 1. 避免全表扫描&#xff08;Full Table Scan&#xff09;…

AR-HUD 光波导方案优化难题待解?OAS 光学软件来破局

波导-HUD系统案例分析 简介 光波导技术凭借其平板超薄结构和强大的二维扩展能力&#xff0c;在解决AR-HUD问题方面展现出显著优势。一方面&#xff0c;其独特的结构特性能够大幅减小对光机体积的需求&#xff0c;成为 HUD 未来发展的重要技术方向&#xff1b;另一方面&#xf…

003图书个性化推荐系统技术剖析:打造智能借阅新体验

图书个性化推荐系统技术剖析&#xff1a;打造智能借阅新体验 在知识经济时代&#xff0c;图书资源日益丰富&#xff0c;如何帮助用户快速找到心仪的图书成为关键。图书个性化推荐系统应运而生&#xff0c;它集成图书信息管理、图书预约等多个核心模块&#xff0c;通过前台展示…

CUDA 实践:隐式 GEMM 卷积 | CUDA

文章写的通俗易懂&#xff0c;根据学习和理解&#xff0c;这里画图更又利于理解。 img2col GEMM 是一种比较常用的卷积优化方法&#xff0c;因为这样可以利用到性能已经优化得比较好的 BLAS 库。早期的一些深度学习框架&#xff08;如 Caffe&#xff09;就是用了这种方式。但…

Linux线程池(下)(34)

文章目录 前言一、v3版本二、单例模式概念特点简单实现 三、其余问题STL线程安全问题智能指针线程安全问题其他锁的概念 总结 前言 加油&#xff01;&#xff01;&#xff01; 一、v3版本 「优化版」&#xff1a;从任务队列入手&#xff0c;引入 「生产者消费者模型」&#xff…

Vert.x学习笔记-EventLoop工作原理

Vert.x学习笔记 Vert.x Event Loop 的工作原理1. 核心设计理念2. 事件循环的执行流程3. 线程绑定与上下文4. 协作与任务委托5. 性能优化与注意事项6. 关键特性总结 单线程事件循环&#xff08;Event Loop&#xff09;1. 什么是单线程事件循环&#xff1f;2. 用生活场景类比3. 单…

基于 HT for Web 的轻量化 3D 数字孪生数据中心解决方案

一、技术架构&#xff1a;HT for Web 的核心能力 图扑软件自主研发的 HT for Web 是基于 HTML5 的 2D/3D 可视化引擎&#xff0c;核心技术特性包括&#xff1a; 跨平台渲染&#xff1a;采用 WebGL 技术&#xff0c;支持 PC、移动端浏览器直接访问&#xff0c;兼容主流操作系统…

德国或将对美国科技巨头征收10%数字税

当地时间5月30日,新一届德国政府刚刚设立的联邦数字化与现代化部议会国务秘书菲利普阿姆托尔表示,尽管存在加剧与美国贸易紧张局势的风险,但德国仍在考虑对美国科技巨头征收10%的数字税。阿姆托尔表示,包括谷歌母公司“字母表”“元”公司等在内的美国多家大型科技巨头在德…