python中的导入方式

目录

一、不同的导入方式        

1.1 导入整个模块

1.2 导入整个模块并使用别名

1.3 从模块中导入特定的对象

1.4 从模块中导入所有对象

1.5 条件导入

1.6 导入时使用具体的层级

二、import的本质

2.1 模块查找

2.2 模块加载

2.3 模块编译

2.4 模块初始化

2.5 命名空间

2.6 使用别名


一、不同的导入方式        

        Python提供了多种方式来引入(或称为“导入”)模块中的内容,这些方式可以帮助你根据具体需求选择最合适的方法来管理和使用代码。这里是Python中常用的几种引用(导入)方式:

1.1 导入整个模块

import module_name

        这种方式导入了整个模块,使用时需要通过模块名作为前缀来引用其中的对象(如函数、类、变量等)。

module_name.function_name()

1.2 导入整个模块并使用别名

import module_name as mn

        这种方式也是导入了整个模块,但是通过为模块设置一个别名(如 mn),使得后续的代码更简洁。

mn.function_name()

1.3 从模块中导入特定的对象

from module_name import object_name

        这种方式直接从模块中导入一个或多个特定的对象(如函数、类、变量等),导入后可以直接使用这些对象,无需模块名前缀。

object_name()

1.4 从模块中导入所有对象

from module_name import *

        这种方式从模块中导入所有公开的对象,允许直接使用这些对象而无需模块名前缀。这通常不推荐使用,因为它可能会导致命名空间中的命名冲突,并且降低代码的可读性。

1.5 条件导入

        Python允许在运行时基于条件来进行导入,这通常用在需要根据不同环境或配置导入不同模块的情况。

if condition: import module_name else: import another_module as module_name

1.6 导入时使用具体的层级

        对于包含多层级目录结构的模块(即包含子模块或子包的模块),可以直接导入具体层级的模块或对象。

from package_name.subpackage_name import module_name

        这些方法可以根据不同的使用场景灵活运用,帮助你更好地组织和管理代码,使得项目结构更加清晰。选择合适的导入方式对于维护大型代码库和团队协作尤为重要。

二、import的本质

        在Python中,import 语句的本质是加载并初始化一个模块,使得模块中定义的函数、类、变量等可以在另一个脚本中被访问和使用。详细来说,import 过程涉及以下几个关键步骤:

2.1 模块查找

        当执行 import 语句时,Python解释器首先查找指定的模块。它会按照一定的路径顺序搜索模块:

  • 当前目录
  • 环境变量 PYTHONPATH 指定的目录
  • 标准库的目录
  • 第三方库目录(通常是位于Python安装目录下的 site-packages 目录)

2.2 模块加载

        一旦找到模块,Python解释器会加载模块到内存中。如果模块已经被加载过(存在于 sys.modules 字典中),解释器会直接使用已加载的模块,而不会重新加载。

2.3 模块编译

        如果模块是第一次被导入,Python会编译这个模块的源代码(.py 文件)为字节码(.pyc 文件),这个编译过程只在模块第一次导入时进行。编译后的字节码会被存储在 __pycache__ 目录下,以便下次导入时直接使用,提高加载速度。

2.4 模块初始化

        模块的顶层代码将被执行,包括所有的定义(如函数、类和变量等的声明)和执行语句。这个初始化过程只在模块第一次导入时发生。

2.5 命名空间

        导入的模块会有自己的命名空间,在这个命名空间内定义的所有名称不会与其他模块的名称冲突。通过模块名作为前缀(如 module_name.function_name()),你可以访问这些名称。

2.6 使用别名

        可以通过 as 关键字给模块或从模块导入的对象指定一个别名,这样可以在代码中使用更简短或更具描述性的名称来引用它们。

import long_module_name as mod
from some_module import some_function as func

        import 语句的核心功能是模块化和代码重用。通过模块化,你可以将代码分解成独立、互不干扰的部分,每个部分专注于完成特定的功能。这样不仅有助于代码组织,还增加了代码的可维护性和可复用性。

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

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

相关文章

密码学:用随机函数隐藏指纹

英文中e的出现频率高,加密后,频率最高的那个符号代表e。这是历史上的一次真实案例。这些符号的概率,叫做“指纹”。 把e加密成2个符号,用随机函数选择,例如70%概率下选择符号1,30%选择符号2。解密时&#…

Web Worker 学习及使用

了解什么是 Web Worker 提供了可以在后台线程中运行 js 的方法。可以不占用主线程,不干扰用户界面,可以用来执行复杂、耗时的任务。 在worker中运行的是另一个全局上下文,不能直接获取 Window 全局对象。不同的 worker 可以分为专用和共享&…

文心一言使用笔记

目录 让文心一言提炼已有的内容,模仿给出的案例写一段宣传稿方法例子 发现写出的内容有瑕疵,如何微调?比如文心一言介绍的领导不全如何让文心一言检查语法和表达问题? 如何让文心一言将每个片段用一两句话总结?为了防止…

通用性I2C接口的应用之驱动SHT20(N32G45XVL-STB)

目录 概述 1 软硬件接口 1.1 MCU与SHT20接口 1.2 开发软硬件信息 1.3 SHT-20模块电路 2 I2C软件接口实现 2.1 MCU相关接口 2.2 软件接口实现 2.3 初始化struct I2C 3 SHT20驱动程序实现 3.1 SHT20驱动调用I2C接口 ​3.2 驱动源代码文件 4 测试 4.1 测试代码实现…

第三十九章 添加和使用 WS-Addressing 标头元素 - 响应消息中的默认 WS-Addressing 标头元素

文章目录 第三十九章 添加和使用 WS-Addressing 标头元素 - 响应消息中的默认 WS-Addressing 标头元素响应消息中的默认 WS-Addressing 标头元素手动添加 WS-Addressing 标头元素处理 WS-Addressing 标头元素 第三十九章 添加和使用 WS-Addressing 标头元素 - 响应消息中的默认…

【Vision Transformers-VIT】: 计算机视觉中的Transformer探索

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

Docker中修改TiDB数据库密码(类似mysql)

1.Docker容器运行TiDB pingcap/tidb:last 2.登陆容器系统: 3.在容器中安装mysql客户端: 4.空密码登陆TiDB 5.修改TiDB密码并退出 6.使用修改后的密码登陆验证:

Unity【GUI】基础知识

什么是UI系统 Ul是UserInterface(用户界面)的简称系统的主要学习内容 1.UI控件的使用 2.U控件的事件响应 3.U的分辨率自适应文章目录 基础知识1、工作原理和主要作用2、基本控件1、文本和按钮控件2、多选框和单选框3、输入框和拖动条4、图片绘制和框 3、复合控件1、工具栏和…

微信小程序画布

canvas: 微信小程序中的canvas组件提供了绘制图片、文字、图形等功能,可以实现丰富的图形和动画效果。以下是关于canvas的使用方法和属性: 1.属性 canvas-id:(必选)Canvas 组件的唯一标识符,用…

MySQL——去重及数据库的表达式

去重 DISTINCT 作用:去除select语句查询出的结果中重复的数据,只显示出重复数据中的一条 代码演示: -- 查询一下有哪些同学参加了考试SELECT * FROM result -- 查询全部的考试成绩 SELECT studentno FROM result -- 查询有哪些同学参加了…

DC/AC电源模块:为新能源汽车充电系统提供高效能源转换

BOSHIDA DC/AC电源模块:为新能源汽车充电系统提供高效能源转换 DC/AC电源模块是新能源汽车充电系统中至关重要的组件,它能够将直流电转换为交流电,为电动车提供高效能源转换。随着人们对可持续能源的需求日益增长,新能源汽车成为…

题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

代码&#xff1a; #include <stdio.h> // 递归函数&#xff0c;用于打印字符数组的剩余部分&#xff08;反向&#xff09; void printReverse(char arr[], int index) { // 递归终止条件&#xff1a;当索引小于0时&#xff0c;不再打印 if (index < 0) { retur…

java基于ssm+jsp 足球赛会管理系统

1前台首页功能模块 足球赛会管理系统&#xff0c;在系统首页可以查看首页、球队介绍、球星介绍、线下足球赛、论坛信息、个人中心、后台管理、在线客服等内容&#xff0c;如图1所示。 图1前台首页功能界面图 用户登录、用户注册&#xff0c;在注册页面可以填写账号、密码、姓名…

第16天:部署准备与CI/CD

第16天&#xff1a;部署准备与CI/CD 目标 准备项目部署到生产环境&#xff0c;并设置持续集成和持续部署&#xff08;CI/CD&#xff09;。 任务概览 学习Django项目部署的基本知识。配置WSGI服务器&#xff0c;如Gunicorn。设置CI/CD流程&#xff0c;如使用Travis CI或Jenk…

【sqlmap命令学习及测试dvwa_SQL_Injection】

文章目录 1.sqlmap命令及 不同级别探索 能否注入命令option1.1 low等级1.2 Medium等级1. 3 High等级 2. 注入流程2.1 数据库2.2 指定数据库表名2.3 指定表的 字段名2.4 内容2.5 当前用户信息2.6 用户密码2.7 其他 1.sqlmap命令及 不同级别探索 能否注入 命令option sqlmap -u…

昇思25天学习打卡营第2天|MindSpore快速入门-张量

张量 Tensor 张量&#xff08;Tensor&#xff09;是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数&#xff0c;这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。 张量是一种特殊的数据结构&#xff0c;与数组和矩阵非常相似。张量&#x…

《C语言》编译和链接

文章目录 一、翻译环境1、预处理2、编译3、汇编4、链接 二、运行环境 一、翻译环境 在使用编译器编写代码时&#xff0c;编写的代码是高级语言&#xff0c;机器无法直接识别和运行&#xff0c;在编译器内部会翻译成机器可执行的机器语言。 编译环境由编译和链接两大过程组成。 …

【编译原理】绪论

1.计算机程序语言以及编译 编译是对高级语言的翻译 源程序是句子的集合&#xff0c;树可以较好的反应句子的结构 编译程序是一种翻译程序 2.编号器在语言处理系统中的位置 可重定位&#xff1a;在内存中存放的起始位置不是固定的 加载器&#xff1a;修改可重定位地址&#x…

Node.js 语言特定指南

Node.js 语言特定指南 本 Node.js 语言特定指南将教您如何使用 Docker 容器化 Node.js 应用程序。在本指南中&#xff0c;您将学习如何&#xff1a; 容器化并运行一个 Node.js 应用程序设置一个本地环境以使用容器开发 Node.js 应用程序使用容器为 Node.js 应用程序运行测试使…

基于weixin小程序的民宿短租系统的设计与实现

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;房主管理&#xff0c;房间类型管理&#xff0c;用户管理&#xff0c;民宿信息管理&#xff0c;民宿预订管理&#xff0c;系统管理 小程序功能包括&#xff1a;系统首页&#xff0c;民宿信息&#xff0c…