百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python编程:如何导入包/模块中的函数和/或类?

off999 2024-10-17 11:50 52 浏览 0 评论

前言

我们前面一系列文章,较详细的介绍函数。随着所掌握的Python知识越来越丰富,我们会编写更多的函数,并分门别类的存放在不同的包和模块中,以便复用。为了复用函数对象,就需要导入到需要的文件模块中。本文就来简单介绍如何调用其它模块的函数。结合代码示例以便更好地理解和应用。

说明:这里所说的导入(import),适用于包/模块中的函数和类对象的导入——包括内置模块、第三方和自定义的模块相关对象。

绝对导入

截至目前,我们已经了解了很多关于函数的知识,接下来看看如何使用它们。编写函数的全部意义在于以后能够重用它们,在Python中,此种需要就转换为将它们导入到需要它们的名称空间中。将对象导入命名空间有许多不同的方法,最常见的方法是import module_name和from module_name import function_name。当然,这些都是非常简单的例子,稍作解释:

  • ? import module_name形式要找到module_name模块,并在本地命名空间中为它定义一个名称,以便import语句在本地命名空间中执行。
  • ? from module_name import identifier形式比这个稍微复杂一点,但基本上做的是相同的事情。它查找module_name并搜索一个属性(或子模块),并在本地命名空间中存储对标识符(identifier)的引用。

这两种形式都可以使用as子句来更改导入对象的名称,例如:

from mymodule import myfunc as better_named_func

为了让你了解导入是什么样子的,这里有一个来自Fabrizio项目中的一个测试模块的示例(注意,导入块之间的空行遵循PEP 8上的指导方针https://www.python.org/dev/peps/pep-0008/#imports:标准库、第三方和本地代码):

# 导入模块函数
from datetime import datetime, timezone # 同一行导入两个
from unittest.mock import patch # 但个导入
import pytest # 第三方库
from core.models import ( # 多个导入
   Exam,
   Exercise,
   Solution,
)

当我们有一个从项目根开始的文件结构时,可以使用点表示法来获得我们想要导入到当前命名空间的对象,它可以是包、模块、类、函数或其他任何东西。

from module import还允许一个catch-all(导入所有)子句,即from module import *,用于将模块中的所有名称一次性获取到当前命名空间中。但这样是不好的(不推荐),原因有与性能有关的风险和名称相互冲突等。你可以在官方Python文档中阅读关于导入的所有知识,但是在结束这个主题之前,来看一个更好的示例。

假设我们已经在lib文件夹中的funcdef.py模块中定义了两个函数,square(n)和cube(n)。我们希望在两个与lib文件夹处于同一级别的模块中使用它们,分别为func_import.py和func_from .py。显示该项目的树形结构如下所示:

在我们给大家展示各个模块的代码之前,请大家记住,为了让Python把它(lib)看做是一个包(package),我们需要在其中放入一个__init__.py模块文件(该模块文件可以是个空文件,啥内容都没有)。

提示:

关于__init__.py文件有两点需要注意。首先,它是一个完整意义上的Python模块,因此你可以像使用其他模块一样将代码放入其中。其次,从Python 3.3开始,将文件夹解释为Python包,它的存在不再是必须的。

示例代码如下:

# 包模块:lib/funcdef.py
def square(n):
    return n ** 2

def cube(n):
    return n ** 3

# 导入方式:importExam01.py
import lib.funcdef

print(lib.funcdef.square(10))
print(lib.funcdef.cube(10))

# 导入方式:importExam02.py
from lib.funcdef import square, cube

print(square(10))
print(cube(10))

这两个文件在执行时都打印100和1000。如上所见,根据在当前作用域中导入的方式和内容,我们所访问的square和cube函数的方式有很大不同。

相对导入

到目前为止,我们看到的导入类型被称为绝对导入。也就是说,它定义了我们想要导入的模块或我们想要导入对象的模块的整个路径。还有另一种将对象导入Python的方法,称为相对导入相对导入是通过在模块前面添加与我们需要回溯的文件夹数量相同的前导圆点(.)来完成的,以便能找到我们所要搜索的内容。简单地说,它是这样的:

from .mymodule import myfunc

在重组项目时,相对导入非常有用。在导入中没有完整的路径,就允许开发人员在不需要重命名太多路径的情况下移动内容。

有关相对导入的完整说明,请参阅PEP 328:https://www.python.org/dev/peps/pep-0328/

在后面的章节中,我们将使用不同的库创建项目,并使用几种不同类型的导入(包括相对导入),因此请确保您花一点时间阅读官方Python文档中的相关内容。

本文小结

本文介绍了导入如何导入外部的对象(包括Python内置的、第三方的以及自定义的),无论是导入类还是函数,其导入模式雷同,另外,导入时还可以根据需要取个别名。

就简要点地写这些了,下次见。记得点赞 + 关注@传新视界,分享给更多的朋友看到,谢谢。

相关推荐

电脑蓝屏无法重启怎么办(电脑蓝屏重启不行)

插上U盘并重启电脑。大多数电脑都可以通过按下F11或F12来选择U盘启动。·在启动时选择U盘启动,然后按回车键。接着选择“第二项”,开始启动PE系统。·现在已经进入PE系统了,找到引导修复工具并双击。...

tplink路由器重设密码步骤(tplink路由器重置密码设置步骤图解)

重设TP-LINK无线路由器密码方法如下1、打开浏览器,在地址栏输入192.168.1.1(一般路由器地址是这个或者查看路由器背面的登录信息)进路由-输入用户名,密码,(默认一般是admin)。2、...

查看电脑ip地址的命令(查看电脑ip地址用什么命令)
查看电脑ip地址的命令(查看电脑ip地址用什么命令)

1、在“本地连接”的状态中查看。2、使用“ipconfig/all”命令查看。3、打开电脑网页,输入IP地址,点击确定,就能看到本机IP。扩展资料IP地址(InternetProtocolAddress),全称为网际协议地址,是一种在...

2025-12-30 10:03 off999

ie浏览器9(IE浏览器9.0如何升级)

1、首先,我们点击开始菜单,找到控制面板,点击一下。2、之后,找到程序和功能选项,点击一下。3、点击进入后,我们找到左边的打开或关闭windows功能,点击一下。4、点击进入后,找到Internet...

hp1020打印机驱动怎么下载(hp1020打印机驱动怎么下载)

惠普1020打印机驱动怎么安装:  1.首先到下载软件名称:惠普1020打印机驱动程序官方版(支持win7/8)32位/64位软件大小:5.09MB更新时间:2014-09-05立即下载  2.然后...

win2003是windows7系统(win2003哪个版本好)

win2003是专门用于服务器的操作系统,现在最主流的windows服务器系统主要是win2003server和win2008server,winXP是个人电脑专用的操作系统,现在微软已经不再提供XP...

路由器账号和密码忘了怎么办

你好,如果你忘记了路由器的用户名和密码,你可以尝试重置一下路由器,大多数路由器都配备了一个复位按键。在重置路由器之后,用户名和密码将被还原为默认值,你可以在路由器的用户手册或厂家网站上找到默认的用户名...

win10永久禁止自动更新(win10禁止自动更新彻底)

阻止Windows10自动更新的方法如下:使用“本地组策略编辑器”:按下“Win+R”键,输入“gpedit.msc”打开本地组策略编辑器,找到“计算机配置”>“管理模板”>“W...

联想笔记本怎么看配置和型号

联想笔记本看配置的方法如下1、打开电脑,点击桌面的计算机,右键菜单里选择【属性】;打开后,即可看到电脑系统的大概信息;2、如果要看比较详细的设备相关信息,点击桌面的计算机,点击右键,在菜单里选择【系统...

怎样把打印机连接到电脑上(怎么把打印机连接电脑上)
  • 怎样把打印机连接到电脑上(怎么把打印机连接电脑上)
  • 怎样把打印机连接到电脑上(怎么把打印机连接电脑上)
  • 怎样把打印机连接到电脑上(怎么把打印机连接电脑上)
  • 怎样把打印机连接到电脑上(怎么把打印机连接电脑上)
photoshop6序列号(photoshop8.01序列号)
  • photoshop6序列号(photoshop8.01序列号)
  • photoshop6序列号(photoshop8.01序列号)
  • photoshop6序列号(photoshop8.01序列号)
  • photoshop6序列号(photoshop8.01序列号)
win10下载应用商店(win10应用商店打不开)

1、点击Win10系统的开始菜单,然后在点击应用商店;2、打开Win10应用商店后,在搜索框里输入想要搜索的应用软件,然后点击检索;3、点击搜索到的应用,点击安装;4、点击安装后,系统会提示要切换到这...

dell电脑重装系统win10(dell 重装win10系统)

戴尔笔记本重装系统win10的步骤如下:制作好wepe启动盘之后,将win10系统iso镜像直接复制到U盘。在需要重装系统的戴尔电脑上插入pe启动盘,重启后不停按F12启动快捷键,调出启动菜单对话框,...

android升级包下载安装(android 升级包)

打开手机系统更新升级,前提是官方有新系统推送才能更新  哪个大不一定,但一般规律如下:  1、小版本的更新,通常越更新越大。比如3.1更新到3.2,通常是修复bug,代码量通常会增大,体积就会增大。 ...

hdd硬盘和ssd(ssd硬盘和hdd硬盘是什么意思)

HDD硬盘和SSD硬盘是两种不同类型的电脑存储设备,它们有着以下区别:1.工作原理:HDD硬盘使用机械旋转的磁盘和读写磁头来存储和读取数据,而SSD硬盘则使用闪存存储数据,类似于USB闪存盘。2....

取消回复欢迎 发表评论: