关于 Python 的 import,你了解多少?

本文详细介绍了Python中的import关键字,包括其作用、不同用法(如导入模块、特定内容、别名和包的导入),以及模块代码的执行机制。重点讲解了模块代码只在首次导入时执行一次的规则和包内__init__.py文件的初始化作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

写过 Python 的猿猿肯定对 import 不陌生。但 Python 在 import module 时会执行相关的代码,你知道吗? Python import 还有其他的什么特性呢?通过这一篇文章,彻底掌握 Python import

二、Python import 详解

2.1 Python import 介绍

在Python中,import是用于导入模块和模块中定义的变量、函数、类等内容的关键字import的作用是扩展Python的功能,并允许在代码中使用其他模块提供的功能。

2.2 Python import 例子

下面是import的主要作用和使用场景,并给出相应的例子:

  1. 导入模块:使用import可以导入一个完整的模块,以便在代码中使用该模块中定义的功能。例如:
python
复制代码
import math

print(math.pi)  # 使用math模块中的常数pi
  1. 导入模块中的特定内容:使用from module import name语法可以导入模块中的特定函数、变量或类,以便直接在代码中使用,而不需要使用模块名称作为前缀。例如:
python
复制代码
from math import sqrt

print(sqrt(16))  # 直接使用sqrt函数,无需使用math.sqrt
  1. 给导入的模块或内容起别名:使用import module as aliasfrom module import name as alias语法可以为导入的模块或内容指定一个别名,以便在代码中使用更短的名称。例如:
python
复制代码
import numpy as np

print(np.array([1, 2, 3]))  # 使用别名np代替numpy
  1. 导入模块中的所有内容:使用from module import *语法可以导入模块中的所有内容,使其在代码中直接可用。但这种做法通常不被推荐,因为它会导致命名冲突和可读性问题。例如:
python
复制代码
from math import *

print(sin(pi/2))  # 直接使用导入的sin和pi,但不推荐这种写法

这些是import的主要作用和使用场景。通过导入其他模块,可以扩展Python的功能,并重用已有的代码。使用合适的导入方式和别名,可以使代码更加简洁和可读。

2.3 Python import 进一步解释

2.3.1 Python import module

在Python中,当一个模块被导入时,模块中的代码会被执行。然而,模块中的代码只会在第一次导入时执行一次。之后,如果再次导入同一个模块,Python解释器会直接使用已经加载的模块,而不会再次执行模块中的代码。

这种行为是为了确保**模块中的代码只会被执行一次****,以避免重复执行相同的操作。通过导入模块,我们可以在需要时使用其中定义的函数、类和变量,而不必重新执行模块中的代码。

值得注意的是,如果在模块中存在全局级别的可执行语句(例如函数定义以外的代码),则在导入时会执行这些语句。因此,模块的导入可能会触发一些副作用操作,例如打印输出或初始化全局变量。

比如:创建test1.py

python
复制代码
print("我是 test1,我被执行了")

def say_hello():
    print("hello world test1")

再创建 test2.py

python
复制代码
def say_hello():
    from test import test1
    test1.say_hello()


if __name__ == '__main__':
    for i  in range(10):
        say_hello()

执行 test2.py 输出

text
复制代码
我是 test1,我被执行了
hello world test1
hello world test1
hello world test1
hello world test1
hello world test1
hello world test1
hello world test1
hello world test1
hello world test1
hello world test1

2.3.2 Python import package

在Python中,当导入一个包(package)时,包本身不会被执行。只有在使用该包中的模块或对象时,才会执行相应的代码。

当导入一个包时,Python解释器会查找并执行该包下的__init__.py文件__init__.py文件可以包含一些初始化代码,用于设置包的环境、导入子模块或执行其他需要在导入时执行的操作。但这些代码只会在首次导入包时执行一次。

例如,假设我们有一个名为my_package的包,它的结构如下:

markdown
复制代码
my_package/
    __init__.py
    module1.py
    module2.py

__init__.py文件中,我们可以放置一些初始化代码:

python
复制代码
print("Executing initialization code in my_package")

# 导入子模块
from . import module1
from . import module2

然后,我们可以在另一个脚本中导入my_package包:

python
复制代码
import my_package

print("Import completed")

运行上述脚本,输出如下:

css
复制代码
Executing initialization code in my_package
Import completed

从输出结果可以看出,在导入my_package包时,__init__.py中的初始化代码被执行了一次。然后,Import completed被打印出来,表示导入完成。

但注意,这里的执行是指__init__.py中的代码被执行,并不是包中的所有模块都被导入和执行。只有在使用my_package中的具体模块或对象时,才会执行相应的代码。

总结起来,当导入一个Python包时,包本身的代码不会被执行,只有在使用包内的模块或对象时才会执行相应的代码。 __init__.py文件中的初始化代码会在首次导入包时执行一次,可用于设置包的环境和导入子模块。

三、总结

介绍了 Python 中 import 关键字的使用方法和工作原理。通过 import ,可以导入模块和模块中定义的内容,扩展 Python 的功能。文章提供了导入模块、导入模块中的特定内容、给导入的模块或内容起别名以及导入模块中的所有内容的例子,展示了 import 的多种用法。

此外,文章解释了模块的代码只会在第一次导入时执行一次的特性,以及导入包时执行__init__.py文件的初始化代码。最后,总结了导入包时只有在使用包内的模块或对象时才执行相应代码,而__init__.py文件中的初始化代码只会在首次导入包时执行一次。

这里给大家分享一份Python全套学习资料,包括学习路线、软件、源码、视频、面试题等等,都是我自己学习时整理的,希望可以对正在学习或者想要学习Python的朋友有帮助!

CSDN大礼包:全网最全《全套Python学习资料》免费分享🎁

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉CSDN大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述
因篇幅有限,仅展示部分资料

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

5️⃣Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述
在这里插入图片描述
上述所有资料 ⚡️ ,朋友们如果有需要 📦《全套Python学习资料》的,可以扫描下方二维码免费领取 🆓
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉CSDN大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈

<think>好的,我现在需要帮助用户了解Pythonimport的用法,并且提供示例。首先,我要回忆一下用户的问题,他明确提到了想了解import的用法或解决相关问题,所以我的回答需要围绕这个主题展开。 用户之前可能已经看过一些基础内容,比如import module_name这样的基本用法,但可能需要更详细的解释和更多的示例。根据系统指令,我需要确保行内数学表达式正确使用$...$,但这里可能涉及代码,所以重点放在代码块和正确的中文解释上。 首先,我需要整理import的不同用法,比如基本导入、别名、从模块导入特定内容、导入子模块等。每个部分都需要一个示例代码块,并解释其作用。同时,用户可能需要知道一些常见问题,比如循环导入或动态导入,这些可以作为注意事项或高级用法提到。 然后,根据用户提供的引用内容,引用[1]和引用[2]都提到了模块导入的基础知识,比如import module_name和导入函数、类等。因此,在回答中需要覆盖这些内容,并适当引用这些资料,但要注意用户可能的需求是更深入的示例和应用场景。 接下来,我需要确保回答结构清晰,分点说明,每个用法都有对应的示例代码。例如,基本用法、别名、从模块导入特定函数、通配符导入(虽然不推荐,但需要提及)、导入子模块和动态导入。每个部分都需要简要说明适用场景和注意事项。 另外,用户可能需要了解常见错误,比如重复导入或模块路径问题,但根据引用内容,这些可能没有被涵盖,所以是否需要提到?可能需要简单提及,但重点还是放在正确用法和示例上。 最后,生成相关问题需要考虑用户可能的后续疑问,比如处理循环导入、模块搜索路径、第三方包安装等。这些问题可以帮助用户进一步学习。 现在,检查是否有遗漏的部分,比如别名的重要性,或者为什么推荐使用import module而不是from module import *。同时,动态导入可能对用户来说比较高级,但可以简单介绍,让用户知道存在这种用法。 总结,回答需要包括: 1. 基本导入 2. 别名 3. 导入特定内容 4. 通配符导入(不推荐) 5. 子模块导入 6. 动态导入 每个部分都配以示例代码和解释,同时注意引用标记的正确使用。最后生成相关问题,帮助用户深入理解。</think>### Python import 用法详解及示例 Python的`import`语句用于导入模块或模块中的特定对象,是代码复用和模块化编程的核心工具。以下是常见用法及示例: --- #### 1. **基本导入** 导入整个模块后,通过`模块名.对象名`调用: ```python import math print(math.sqrt(16)) # 输出: 4.0 ``` **适用场景**:需要频繁使用模块中的多个功能时,避免命名冲突[^1]。 --- #### 2. **模块别名** 通过`as`关键字简化模块名: ```python import numpy as np array = np.array([1, 2, 3]) ``` **适用场景**:模块名较长或需要避免命名冲突时[^2]。 --- #### 3. **导入特定对象** 直接导入模块中的函数、类或变量: ```python from datetime import datetime now = datetime.now() ``` **注意**:过度使用可能导致命名冲突[^2]。 --- #### 4. **通配符导入(不推荐)** 导入模块所有对象: ```python from random import * print(randint(1, 10)) # 生成1-10的随机整数 ``` **缺点**:污染命名空间,降低代码可读性[^1]。 --- #### 5. **导入子模块** 针对包含子模块的库(如`matplotlib`): ```python import matplotlib.pyplot as plt plt.plot([1, 2, 3], [4, 5, 6]) plt.show() ``` --- #### 6. **动态导入(运行时导入)** 使用`importlib`在运行时按需加载模块: ```python import importlib module_name = "json" json = importlib.import_module(module_name) data = json.loads('{"key": "value"}') ``` **适用场景**:根据配置或用户输入选择模块[^2]。 --- ### 注意事项 - **循环导入**:避免模块A导入模块B,同时模块B导入模块A。 - **模块搜索路径**:使用`sys.path`查看解释器搜索模块的路径。 - **重复导入**:Python会自动缓存已导入模块,重复`import`不会重新加载。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值