python打卡day30

模块和库的导入

知识点回顾:

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

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

python的学习就像是学一点常见的基础语法,再去针对性地学习处理任务需要用到的库,库的导入很简单:

  • 标准导入整个库,import xxx
  • 从库中导入特定项,from xxx import yyy
  • 非标准导入整个库,from xxx import *(和上面导入库中特定项一样,用的时候可以不用加库的前缀)

------------------------------------------------- 相关概念辨析一下 ------------------------------------------------------

模块(Module)

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

包(Package)在python里,包就是库

  • 本质:有层次的文件目录结构(即文件夹),用于组织多个模块和子包
  • 核心特征:包的根目录下必须包含一个 `__init__.py` 文件(可以为空),用于标识该目录是一个包
  1. ---------------------------------------------------------------------------------------------------------------------------------
  • IDE通常会将你打开的项目文件夹设为“根目录”(或者说,运行时的工作目录)。Python 在导入模块时,会从这个根目录(以及其他一些标准位置和脚本所在的目录)开始查找,具体操作中,模块导入可以按目录层级分为以下三种类型:

1.同级目录导入

  • 场景:当前脚本和要导入的模块文件在同一个目录下
  • 方法:直接使用上面提到的三种导入库的方式

project/

├── main.py        # 当前脚本

└── utils.py       # 要导入的模块

# main.py 中导入 utils.py
import utils
utils.some_function()# 或使用 from 语法
from utils import some_function
some_function()

2.子目录导入

  • 场景:要导入的模块位于当前脚本的子目录中
  • 方法:需要将子目录转换为 Python 包,再通过包路径导入

project/

├── main.py

└── subdir/

    ├── __init__.py  # 空文件,标识这是一个包

    └── utils.py  # 子目录中的模块

# main.py 中导入子目录模块
from subdir import utils
utils.some_function()# 或者只导入相关函数
from subdir.utils import some_function
some_function()

3.跨目录导入

  • 场景:要导入的模块位于完全不同的目录层级(如父目录、兄弟目录等)
  • 方法:需动态修改 sys.path 或使用绝对导入(Python 3.3+ 支持命名空间包)
  • project/

    ├── parent_dir/

    │   └── utils.py

    └── child_dir/

        └── main.py  # 需要导入 ../parent_dir/utils.py

# main.py 中动态添加父目录到 Python 路径
import sys
import os# 获取父目录路径并添加到 sys.path
parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(parent_dir)# 现在可以导入父目录中的模块
from parent_dir import utils
utils.some_function()

直接在终端运行python -m child_dir.main也可以将父目录路径添加到sys.path

@浙大疏锦行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/83733.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ —— Lambda 表达式

🎁个人主页:工藤新一 🔍系列专栏:C面向对象(类和对象篇) 🌟心中的天空之城,终会照亮我前方的路 🎉欢迎大家点赞👍评论📝收藏⭐文章 文章目录 L…

十三、面向对象底层逻辑-Dubbo序列化Serialization接口

一、引言:分布式通信的数据桥梁 在分布式服务调用中,参数的跨网络传输需要将对象转化为二进制流,这一过程直接影响系统的性能、兼容性与安全性。Dubbo通过Serialization接口构建了可扩展的序列化体系,支持多种序列化协议的无缝切…

批量剪辑 + 矩阵分发 + 数字人分身源码搭建全技术解析,支持OEM

在互联网内容生态蓬勃发展的当下,企业与创作者对内容生产与传播效率的要求日益增长。批量剪辑、矩阵分发和数字人分身技术的融合,成为提升内容创作与运营效能的关键方案。从源码层面实现三者的搭建与整合,需要深入理解各功能技术原理&#xf…

Java List 接口知识点详解

一、List 接口概述 1. 基本定义 继承关系:List 是 Java 集合框架(Collection Framework)中的一个有序队列接口,直接继承自 Collection 接口。核心特性: 有序性:元素按插入顺序存储,可通过索引…

OpenCV-去噪效果和评估指标方法

实验前言 噪音类型 opencv常见噪音类型有 高斯噪音:高斯噪音是一种随机噪音,其数值服从正态分布。图像受到高斯噪音的影响时,像素值的变化类似于白噪音,但是噪音的强度会随像素值的变化而变化。 椒盐噪音:椒盐噪音是…

永磁同步电机公式总结【一】——反电动势、磁链、转矩公式;三项、两项电压方程;坐标表换方程

一、PMSM 电机参数介绍 1.1 转子极数 转子极数 (Rotor Poles) :三相交流电机每组线圈都会产生 N、S 磁极,每个电机每相含有的永磁体磁极个数就是极数。由于磁极是成对出现的,所以电机有 2、4、6、8……极 (偶数)。 未知参数的电机&#xff…

eMMC深度解析:嵌入式多媒体卡的硬件电路设计要点

一、eMMC 技术深度解析 1.定义与背景 eMMC(Embedded Multi Media Card)是一种专为嵌入式系统设计的非易失性存储解决方案,它将 NAND 闪存、主控芯片和接口协议封装在一个 BGA(Ball Grid Array)封装中。其核心目标是简…

常见提示词攻击方法和防御手段——提示词越狱

提示词越狱(Prompt Jailbreaking)是一种针对大型语言模型(LLM)的攻击手段,旨在通过精心设计的输入提示绕过模型的安全审查和伦理限制,使其生成原本被禁止的内容(如暴力、非法操作、敏感信息等&a…

MySQL之基础事务和隔离级别

目录 引言: 什么是事务? 事务和锁 mysql数据库控制台事务的几个重要操作指令(transaction.sql) 1、事物操作示意图: 2.事务的隔离级别 四种隔离级别: 总结一下隔离指令 1. 查看当前隔离级别​​ …

学习记录:DAY29

项目开发日志:技术实践与成长之路 前言 回顾这几天的状态,热情总是比我想象中更快被消耗完。比起茫然徘徊的小丑,我更希望自己是对着风车冲锋的疯子。 今天继续深入项目的实际业务。 状态好点的时候,再看自己EMO时写的东西&…

kotlin Android AccessibilityService 无障碍入门

安卓的无障碍模式可以很好的进行自动化操作以帮助视障人士自动化完成一些任务。 无障碍可以做到,监听屏幕变化,朗读文本,定位以及操作控件等。 以下从配置到代码依次进行无障碍设置与教程。 一、配置 AndroidManifest.xml 无障碍是个服务…

【Vue篇】数据秘语:从watch源码看响应式宇宙的蝴蝶效应

目录 引言 一、watch侦听器(监视器) 1.作用: 2.语法: 3.侦听器代码准备 4. 配置项 5.总结 二、翻译案例-代码实现 1.需求 2.代码实现 三、综合案例——购物车案例 1. 需求 2. 代码 引言 💬 欢迎讨论&#…

WPS中代码段的识别方法及JS宏实现

在WPS中,文档的基本结构可以通过对象模型来理解: (1)Document对象:表示整个文档 (2)Range对象:表示文档中的一段连续区域,可以是一个字符、一个句子或整个文档 &#…

el-tree结合el-tree-transfer实现穿梭框里展示树形数据

参考文章&#xff1a;我把他的弹框单拉出来一个独立文件作为组件方便使用&#xff0c;遇到一些问题记录一下。 testComponet.vue <template><div class"per_container"><div class"per_con_left"><div class"per_con_title&q…

Go 后端中双 token 的实现模板

下面是一个典型的 Go 后端双 Token 认证机制 实现模板&#xff0c;使用 Gin 框架 JWT Redis&#xff0c;结构清晰、可拓展&#xff0c;适合实战开发。 项目结构建议 /utils├── jwt.go // Access & Refresh token 的生成和解析├── claims.go // 从请求…

Typescript学习教程,从入门到精通,TypeScript 对象语法知识点及案例代码(7)

TypeScript 对象语法知识点及案例代码 TypeScript 是 JavaScript 的超集&#xff0c;提供了静态类型检查和其他增强功能。在 TypeScript 中&#xff0c;对象是面向对象编程&#xff08;OOP&#xff09;的基础。 一、对象概述 在 TypeScript 中&#xff0c;对象是属性的集合&a…

应用BERT-GCN跨模态情绪分析:贸易缓和与金价波动的AI归因

本文运用AI量化分析框架&#xff0c;结合市场情绪因子、宏观经济指标及技术面信号&#xff0c;对黄金与美元指数的联动关系进行解析&#xff0c;揭示本轮贵金属回调的深层驱动因素。 周三&#xff0c;现货黄金价格单日跌幅达2.1%&#xff0c;盘中触及3167.94美元/盎司关键价位&…

命令行登录 MySQL 报 Segmentation fault 故障解决

问题描述&#xff1a;对 mysql8.0.35 源码进行 make&#xff0c;由于一开始因为yum源问题少安装依赖库 库&#xff0c;在链接时遇到错误 undefined reference to&#xff0c;后来安装了相关依赖库&#xff0c;再次 make 成功。于是将 mysqld 启动&#xff0c;再用 mysql -u roo…

Axure设计数字乡村可视化大屏:构建乡村数据全景图

今天&#xff0c;让我们一同深入了解由Axure设计的数字乡村可视化大屏&#xff0c;看看它如何通过精心的布局和多样化的图表类型&#xff0c;将乡村的各类数据以直观、易懂的方式呈现出来&#xff0c;为乡村管理者提供有力的数据支持。 原型效果预览链接&#xff1a;Axure数字乡…

3D个人简历网站 4.小岛

1.模型素材 在Sketchfab上下载狐狸岛模型&#xff0c;然后转换为素材资源asset&#xff0c;嫌麻烦直接在网盘链接下载素材&#xff0c; Fox’s islandshttps://sketchfab.com/3d-models/foxs-islands-163b68e09fcc47618450150be7785907https://gltf.pmnd.rs/ 素材夸克网盘&a…