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

Python import 详解

import 机制

什么是 import

在 Python 中,import 用于引入模块(module)、包(package)或其他 Python 文件中的代码,以便在当前文件中使用。模块是包含 Python 代码(函数、类、变量等)的 .py 文件,包是一个包含 init.py 文件的文件夹。

Python 的模块系统比前端更灵活,因为它支持动态加载、别名、选择性导入等功能。

基本语法

# 导入整个模块
import math
print(math.sqrt(16))  # 输出: 4.0# 导入模块并设置别名
import numpy as np
array = np.array([1, 2, 3])# 从模块中导入特定对象
from math import sqrt
print(sqrt(16))  # 输出: 4.0# 导入模块中的所有内容(不推荐,易导致命名冲突)
from math import *

对比前端:

  • import math 类似 import * as math from ‘math’;
  • from math import sqrt 类似 import { sqrt } from ‘math’;
  • import numpy as np 类似 import numpy from ‘numpy’ as np;(ES Module 风格)

模块搜索路径

Python 在导入模块时会按照以下顺序查找:

1.当前目录

2.PYTHONPATH 环境变量中指定的路径

3.Python 安装的默认路径(如标准库路径)

import sys
print(sys.path)

包 pack

包是一个包含 init.py 文件的文件夹,用于组织多个模块。假设有以下目录结构:

my_package/
├── __init__.py
├── module1.py
└── module2.py

对比前端:

包类似于前端项目中的一个文件夹,包含多个模块文件,init.py 类似于前端的 index.js,用于初始化包。

动态导入

Python 支持动态导入模块,类似于前端的动态 import()。

  • 动态加载插件
  • 根据条件加载不同模块
module_name = "math"
module = __import__(module_name)
print(module.sqrt(16))  # 输出: 4.0

使用一些注意

  • 避免循环导入:模块 A 导入 B,B 又导入 A,会导致 ImportError。解决方法是重构代码或延迟导入。
  • 命名冲突:避免使用 from module import *,因为可能覆盖当前命名空间的变量。
  • 性能:导入大型模块(如 pandas)可能增加启动时间,建议按需导入。
http://www.dtcms.com/a/315666.html

相关文章:

  • linux_https,udp,tcp协议(更新中)
  • C++ ---》string类的模拟实现
  • CRT调试堆检测:从原理到实战的资源泄漏排查指南
  • HBM Basic(VCU128)
  • nflsoi 7.29 题解
  • Python-深度学习--2信息熵,条件熵(ID3决策树),KL散度
  • 飞算JavaAI—AI编程助手 | 引领开发新时代,智能化编程的完美助手
  • python学智能算法(三十三)|SVM-构建软边界拉格朗日方程
  • 分布式微服务--Nacos持久化
  • Modstart 请求出现 Access to XMLHttpRequest at ‘xx‘
  • 用 Python 构建高质量的中文 Wikipedia 语料库:从原始 XML 到干净段落
  • rabbitMq内容整理
  • PromptPilot搭配Doubao-seed-1.6:定制你需要的AI提示prompt
  • 云计算一阶段Ⅱ——11. Linux 防火墙管理
  • LeetCood算法题~水果成篮
  • [element-plus] ClickOutside点击其他地方
  • 【IDEA】IntelliJ IDEA 中文官方文档全面介绍与总结
  • Docker 部署工程基本命令记录
  • uniapp renderjs 逻辑层,视图层互相传递数据封装
  • 星图云开发者平台赋能商储油安全管控数字化转型
  • 漏洞分析:90分钟安全革命
  • NLP自然语言处理 03 Transformer架构
  • 基于 FFmpeg 与 V4L2 的多路摄像头视频采集,图像处理处理与 RTMP 推流项目(开源)
  • GPU 基础矩阵精规组织教程:从基础作用到实战应用
  • EAGLE-2:通过动态草稿树加速语言模型推理
  • 国内办公安全平台新标杆:iOA一体化办公安全解决方案
  • 用 PyTorch 实现一个简单的神经网络:从数据到预测
  • Tdengine 时序库年月日小时分组汇总问题
  • EP01:【DL 第二弹】张量(Tensor)的创建和常用方法
  • 利用DeepSeek编写带缓冲输出的V语言程序