从零开始:Python语言基础之模块导入

python 三种导入模块的方法 阅读详情

一、模块的基础概念

模块本质上就是一个包含Python代码的 .py 文件。例如,我们创建一个名为 math_utils.py 的文件,在其中定义一些数学相关的函数:

# math_utils.py
def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

这里的 math_utils.py 就是一个模块,其中的 add 和 subtract 函数可以被其他Python文件调用。

二、模块导入的基本语法

1. import语句

使用 import 关键字导入整个模块,语法如下:

import 模块名

导入后,可以通过 模块名.函数名 或 模块名.变量名 的方式访问模块中的内容。例如,在另一个Python文件中导入 math_utils.py 模块:

import math_utils

result1 = math_utils.add(3, 5)
result2 = math_utils.subtract(10, 4)
print(result1)  # 输出8
print(result2)  # 输出6

2. from...import语句

 

如果只需要导入模块中的部分内容,可以使用 from...import 语句:

from 模块名 import 函数名/类名/变量名

例如,只导入 math_utils.py 中的 add 函数:

from math_utils import add

result = add(2, 8)
print(result)  # 输出10

也可以同时导入多个内容:

from math_utils import add, subtract

result1 = add(1, 2)
result2 = subtract(5, 3)
print(result1)  # 输出3
print(result2)  # 输出2

3. from...import *

 

这种方式可以导入模块中的所有内容,但不推荐在实际开发中大量使用,因为可能会导致命名冲突,使代码难以维护。

from math_utils import *

result1 = add(4, 6)
result2 = subtract(9, 7)
print(result1)  # 输出10
print(result2)  # 输出2

三、模块导入的高级用法

 

1. 导入时使用别名

 

当模块名较长,或者模块名与当前文件中的变量、函数名冲突时,可以为模块设置别名:

import math_utils as mu

result = mu.add(100, 200)
print(result)  # 输出300

同样,使用 from...import 语句导入时也可以为函数或类设置别名:

from math_utils import add as addition

result = addition(50, 30)
print(result)  # 输出80

2. 导入标准库和第三方库

 

Python标准库包含了大量实用的模块,如 os (用于操作系统相关操作)、 random (生成随机数)、 datetime (处理日期和时间)等。安装第三方库(如 numpy 、 pandas )后,也可以通过相同的导入方式使用。

import os
import random
import datetime

print(os.getcwd())  # 输出当前工作目录
print(random.randint(1, 100))  # 输出1到100之间的随机整数
print(datetime.datetime.now())  # 输出当前日期和时间

3. 导入自定义包

 

包(Package)是一种用于组织多个模块的方式,本质上是包含 __init__.py 文件的文件夹。例如,创建一个名为 my_package 的包,结构如下:

my_package/
    __init__.py
    module1.py
    module2.py

在 __init__.py 文件中可以为空,也可以编写初始化代码。导入包中的模块时,可以使用以下方式:

from my_package import module1
from my_package.module2 import some_function

四、模块导入常见问题与解决方案

 

1. 模块找不到(ModuleNotFoundError)

 

当Python解释器无法找到指定模块时,会抛出 ModuleNotFoundError 异常。可能原因及解决方法如下:

 

①模块未安装:如果是第三方库,使用 pip install 库名 安装,例如 pip install requests 。

​

②模块路径错误:自定义模块需确保其所在目录在Python解释器的搜索路径中。可以通过以下两种方式解决:

​

③将模块所在目录添加到系统环境变量 PYTHONPATH 中。

​

④在代码中临时添加模块路径:

import sys
sys.path.append('/path/to/your/module')  # 将模块路径添加到搜索路径
import your_module

2. 循环导入(Cyclic Import)

 

循环导入是指两个或多个模块相互导入对方,导致导入失败。例如:

# module_a.py
from module_b import func_b

def func_a():
    print("这是func_a")
    func_b()

# module_b.py
from module_a import func_a

def func_b():
    print("这是func_b")
    func_a()

解决方法包括:

 

①重构代码:调整模块结构,避免相互依赖。

​

②延迟导入:将导入语句放在函数内部,减少导入时的依赖冲突。

# module_a.py
def func_a():
    print("这是func_a")
    from module_b import func_b
    func_b()

# module_b.py
def func_b():
    print("这是func_b")
    from module_a import func_a
    func_a()

3. 命名冲突

 

当导入的函数、类或变量名与当前文件中的名称重复时,会出现命名冲突。可以通过导入时使用别名解决:

from math_utils import add as mu_add
def add(a, b):  # 自定义add函数
    return a * b

result1 = mu_add(3, 5)  # 使用模块中的add函数,结果为8
result2 = add(3, 5)  # 使用自定义的add函数,结果为15

五、总结

 

模块导入是Python编程中实现代码复用和模块化开发的关键技术。从基础的 import 和 from...import 语句,到高级的别名设置、包管理,再到解决常见的导入问题,每个环节都需要开发者熟练掌握。合理使用模块导入,不仅能提高开发效率,还能使代码结构更加清晰、易于维护。随着项目规模的扩大,对模块和包的深入理解将成为构建大型Python应用的重要基础。

感谢大家的关注    在持续更新中

Python3导入自定义模块的三种方法详解 这篇文章主要给大家介绍了关于Python3导入自定义模块的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。 前话 最近跟着廖雪峰的教程学到 模块 这一节。关于如何自定义一个模块,如果大家不懂的话先来看看基本的介绍: 模块 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。 ... 阅读详情

相关推荐

从零开始理解 Python 包:导入技巧与项目结构优化

相对导入:适用于包内部的模块导入。绝对导入:推荐的做法,能够保持项目结构清晰,适用于跨目录的模块导入。sys.path修改和环境变量的方式更多用于临时的解决方案,通常在生产环境中不推荐使用。避免直接从模块文件中运行是为了确保项目的包结构和导入路径正确。最好通过创建一个入口点文件,或使用-m参数启动程序,这样 Python 会正确处理模块导入路径,避免找不到模块或包的情况。

AI Agent 首席体验官 1092

Python引入自己写的模块

自制模块引入方法(import,sys方法)

xu431225的博客 4211

Python 中自定义模块并导入的完整指南

在 Python 中,模块(Module)是包含 Python 代码的文件,它可以定义函数、类和变量,还可以包含可执行的代码。模块可以让你的代码更加模块化,易于维护和复用。Python 提供了很多内置模块,也允许我们自定义模块来扩展功能。本篇文章将详细讲解如何创建自定义模块,并在其他 Python 文件中导入和使用它们。🚀模块是一个包含 Python 定义和语句的文件。每个 Python 文件(.py)本质上都是一个模块。函数:一组可以被调用的代码,用于执行特定的任务。类:对象的蓝图,封装了数据和方法。

m0_62599305的博客 1871

python——模块导入

python模块学习,如何导入其他模块以及导入第三方模块;常用的模块

qq_34683631的博客 1万+

《UE4游戏开发》之 《音效系统的实现》

音效系统需要负责管理什么事情: 1.1 确定声音控制的分类:如背景音乐、技能音效、界面音效、角色配音等,不同游戏对声音有不同的分类 1.2 控制每个分类的声音的开启与关闭,以及调节每个分类声音的大小 解决如何分类: 2.1 首先需要知道ue4为声音分类提供了什么:SoundClass通常需要一个根分类【SC_RPG_Master】,便于总体控制音效,以及指定引擎默认启动的音效 打开SoundClass资产【SC_RPG_Master】,对根控制的设置,将逐级传递并按比例进行设置,以此达到控制一类声音的目的.

qq_21919621的博客 2126

WinDbg调试工具安装全攻略:从下载到配置的保姆级教程(Windows 10/11适用)

本文提供了一份详细的WinDbg调试工具安装与配置指南,适用于Windows 10/11用户。文章对比了WinDbg Preview独立版与SDK内置经典版的区别,并手把手指导从Microsoft Store或Windows SDK完成安装。核心部分重点讲解了如何配置符号文件路径与源代码路径,这是让WinDbg发挥强大调试功能的关键步骤,并针对常见安装问题提供了实用的排错方法。

hp777的博客 383

Python导入模块的3种方式(超级详细)

很多初学者经常遇到这样的问题,即自定义模板后,在其它文件中用 import(或 from...import) 语句引入该文件时,Python 解释器同时如下错误:ModuleNotFoundError: No module named '模块名'意思是 Python 找不到这个模块名,这是什么原因导致的呢?要想解决这个问题,读者要先搞清楚 Python 解释器查找模块文件的过程。通常情况下,当使用 import 语句导入模块后,Python 会按照以下顺序查找指定的模块文件当前目录。

liuqinhou的博客 7788

ADSP-21565的SigmaStudio图形化编程实战:从FW工程改造到音频通道打通

本文详细介绍了如何将ADSP-21569的SigmaStudio图形化编程固件工程改造,以适配ADSP-21565的纯片内SRAM内存架构。通过修改内存映射和链接文件,打通了音频输出通道,并成功利用SigmaStudio进行图形化编程,实现了从白噪声生成到音频输出的完整验证流程。

weixin_29169505的博客 379

Python模块及不同目录下导入模块方法

一、模块 在实际程序开发过程中,随着我们代码越写越多,文件中代码越来越长,最终导致越来越难以维护。为了编写可维护代码,我们可以把很多函数分组,分别放到不同文件里。在Python中,一个 .py 文件就称为一个模块(module)。为避免模块名冲突,Python引入了按目录来组织模块的方法,称为包(package)。 使用模块优点:①提高代码可维护性 ②编写代码不必从...

xjtuse123的博客 2万+

DDR4内存PCB设计实战:8层板Fly-by拓扑信号完整性优化

本文深入探讨了DDR4内存条在8层PCB板上采用Fly-by拓扑时的信号完整性优化实战。文章详细解析了层叠规划、阻抗控制、电源分割、等长布线及串扰抑制等关键设计要点,并强调了仿真验证的重要性,为硬件工程师提供了从理论到实践的完整设计指南与自查清单。

weixin_29296241的博客 338

Google AdSense收款前必做:W-8BEN税务认证的3个关键选择与1个提交时机小技巧

本文深入解析Google AdSense收款前必须完成的W-8BEN税务认证,重点介绍账号类型选择、特殊税率勾选、美国活动界定等3个关键决策,并分享提交时机的小技巧,帮助站长高效通过审核,确保广告收入顺利到账。

weixin_30443731的博客 671

[Python] 模块导入与字典 : 从入门到进阶

由浅入深讲解Python中模块的导入和字典的使用

kevin_blog 1364

基于Simulink的PR(比例谐振)控制器在单相整流中的应用

本文详细介绍了基于Simulink的单相整流系统中PR(比例谐振)控制器的设计与实现方法。首先阐述了PR控制器相较于传统PI控制器的优势,能够有效消除交流信号跟踪中的稳态误差。接着系统讲解了PR控制器的传递函数原理、实用型设计(带带宽)及参数整定方法。通过Simulink建模步骤,包括主功率电路搭建、电压外环PI设计、电流指令生成、PR控制器实现(推荐MATLAB Function方法)和SPWM调制等关键环节。仿真对比显示PR控制在电流跟踪精度(THD仅1.9%)、功率因数(0.998)和动态响应(突变恢

amy_mhd的博客 689

模块导入的几种方式

概念 Python 模块是一个以 .py 结尾的 Python 文件,包含了 Python 对象定义和Python语句。每一个模块在python里都被看做是一个独立的文件。模块可以被别的程序引入,以使用该模块中的函数等功能,这也是使用 python 标准库的方法。 模块导入 模块可以导入其它模...

chuli0136的博客 7453

Underactuated Robotics - 欠驱动机器人学(一)- 全驱动与欠驱动系统

根据牛顿的观点,机械系统的动力学是二阶的(其状态由位置向量 q(也称为配置向量)和速度向量以及(可能还有)时间给出。二阶控制动力系统的一般形式是:其中 u 是控制向量。定义 1.1 (欠驱动控制微分方程) 二阶控制微分方程描述如下:在状态和时间 t 中,如果所得到的映射是可射的:对于每一个,都存在一个能产生预期响应的,那么系统就是全驱动的。否则,就是欠驱动(状态在时间 t)。

机器人控制与仿真应用 3377

最新Python爬虫实战(入门爬虫篇)——案例7:电影网站电影数据采集(详细爬虫思路截图+抓包动图演示+完整爬虫代码+详细注释)

本次案例通过Python爬虫技术,成功实现了对某电影网站Top250多页电影详细信息的批量爬取与Excel保存。代码采用模块化设计,包含分页请求构造、XPath+正则提取结构化信息、Excel数据持久化保存等完整流程。通过配置User-Agent等请求头信息,有效模拟浏览器行为以绕过豆瓣基础反爬策略。整个爬虫逻辑遵循"分页遍历 → 请求页面 → 解析HTML → 提取电影信息 → 保存到Excel"的标准流程,与主流静态网站爬取范式高度一致。

努力让自己发光,对的人才能迎着光而来 11万+

[Python学习日记-45] Python 中模块的介绍与导入

在前面的学习当中偶尔我们会看到 import ... 一个什么东西的,或者 from ... import ...,那时候并没有进行介绍,主要是那个时候还不会用到,其实我们做这个动作的时候就是引入一个模块,而 from ... import ... 是类似从一个工具包里面引入里面其中一个工具(模块),在后面的文章当中我们会介绍一下一些常用的模块,大概会有十来个偏向于基础的,更多的会在后面面向对象当中有更多的讲述,下面我们将好好的介绍一下到底什么是模块,以及应该如何导入模块吧。

JovaZou的成长之路 981

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

了解python模块and模块导入的几种方式

概念 Python 模块是一个以 .py 结尾的 Python 文件,包含了 Python 对象定义和Python语句。每一个模块在python里都被看做是一个独立的文件。模块可以被别的程序引入,以使用该模块中的函数等功能,这也是使用 python 标准库的方法。 模块导入 模块可以导入其它模块,习惯上把所有 import语句放在模块的开头(不要求)。模块导入的方式有几种: 方式一:使用 imp...

ivenqin的博客 1086

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【Python】从基础到进阶(一):了解Python语言基础以及变量的相关知识

Python是一种高级、解释型、通用的编程语言,由Guido van Rossum于20世纪90年代初创立。Python以其简洁易读的语法和强大的功能而闻名,使其成为新手和经验丰富的开发人员的首选语言之一。x = 10 # 定义一个整数变量name = "Alice" # 定义一个字符串变量pi = 3.14 # 定义一个浮点数变量is_active = True # 定义一个布尔变量变量名应该具有描述性,以便代码的可读性和可维护性。

Allen- 7667

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Python3之模块及包的导入 import用法

一、模块导入 1.定义 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。 模块让你能够有逻辑地组织你的 Python 代码段。 把相关的代码分配到一个模块里能让你的代码更好用,更易懂。 模块能定义函数,类和变量,模块里也能包含可执行的代码。 包括:内置模块,自定义模块,第三方模块; 2.作用 最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编.

xcntime的专栏 2626

python模块导入的三种写法_Python3导入自定义模块的三种方法详解

前话最近跟着廖雪峰的教程学到 模块 这一节。关于如何自定义一个模块,如果大家不懂的话先来看看基本的介绍:模块在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Modu...

weixin_39870132的博客 491

android调用python模块 chaquo_python 浅析模块的导入和调用

给IT入门加星标,提升编程技能今天买了一本关于模块的书,说实话,模块真的太多了,小编许多也不知道,要是把模块全讲完,可能得出本书了,所以小编在自己有限的能力范围内在这里浅析一下自己的见解,同时讲讲几个常用的模块。什么是模块?  在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里面,代码会越来越长,越来越不容易维护。  为了编写可以维护的代码,我们把很多函数分组,分别放到不同的...

weixin_34599904的博客 1032

Python中的模块魔法:如何巧妙地导入与使用

在软件开发过程中,经常会遇到这样的情况:我们需要使用一些特定的功能来完成任务,比如进行数学运算、处理日期时间、发送网络请求等。如果每次都从零开始编写这些功能,不仅耗时耗力,还容易出错。这时,Python的强大之处就体现出来了——它允许我们通过导入模块的方式,直接使用别人已经写好的代码库。这不仅极大地提高了我们的工作效率,还能保证代码的质量和安全性。

qq_44771627的博客 998

python三种导入模块的方法_Python3导入自定义模块的三种方法详解

前话最近跟着廖雪峰的教程学到 模块 这一节。关于如何自定义一个模块,如果大家不懂的话先来看看基本的介绍:模块在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Modu...

weixin_39680121的博客 456

python导入模块有几种方式、各有什么特点_Python常用模块——模块介绍与导入

Python常用模块——模块介绍与导入一、什么是模块?在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少了,很多编程语言都采用这种组织代码的形式。在Python中,以个.py文件就可以称之为一个模块(Module)。二、使用模块有什么好处?1、最大的好处是...

weixin_39816448的博客 230

python用什么来写模块-Python常用模块——模块介绍与导入

Python常用模块——模块介绍与导入一、什么是模块?在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少了,很多编程语言都采用这种组织代码的形式。在Python中,以个.py文件就可以称之为一个模块(Module)。二、使用模块有什么好处?1、最大的好处是...

q6q6q的专栏 662
上一篇: 从零开始:Python语言基础之函数定义与调用
下一篇: 数字政务安全实战:等保2.0框架下OA系统防护全解析
玉笥寻珍
博客等级 码龄2年 282粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玉笥寻珍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值