使用from…import语句导入模块

news2025/7/5 23:02:22

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

在使用import语句导入模块时,每执行一条import语句都会创建一个新的命名空间(namespace),并且在该命名空间中执行与.py文件相关的所有语句。在执行时,需在具体的变量、函数和类名前加上“模块名.”前缀。如果不想在每次导入模块时都创建一个新的命名空间,而是将具体的定义导入到当前的命名空间中,这时可以使用from…import语句。使用from…import语句导入模块后,不需要再添加前缀,直接通过具体的变量、函数和类名等访问即可。

说明:命名空间可以理解为记录对象名字和对象之间对应关系的空间。目前Python的命名空间大部分都是通过字典(dict)来实现的。其中,key是标识符;value是具体的对象。例如,key是变量的名字,value则是变量的值。

from…import语句的语法格式如下:

from modelname import member

参数说明:

l  modelname:模块名称,区分字母大小写,需要和定义模块时设置的模块名称的大小写保持一致。

l  member:用于指定要导入的变量、函数或者类等。可以同时导入多个定义,各个定义之间使用逗号“,”分隔。如果想导入全部定义,也可以使用通配符星号“*”代替。

多学两招:在导入模块时,如果使用通配符“*”导入全部定义后,想查看具体导入了哪些定义,可以通过显示dir()函数的值来查看。例如,执行print(dir())语句后将显示类似下面的内容。

 ['__annotations__', '__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'change', 'getHeight', 'getWidth']

其中change、getHeight和getWidth就是我们导入的定义。

例如,通过下面的3条语句都可以从模块导入指定的定义。

from bmi import fun_bmi                        # 导入bmi模块的fun_bmi函数

from bmi import fun_bmi,fun_bmi_upgrade       # 导入bmi模块的fun_bmi和fun_bmi_upgrade函数

from bmi import *                             # 导入bmi模块的全部定义(包括变量和函数)

注意:在使用from…import语句导入模块中的定义时,需要保证所导入的内容在当前的命名空间中是唯一的,否则将出现冲突,后导入的同名变量、函数或者类会覆盖先导入的。这时就需要使用import语句进行导入。

图标 (35)

  实例02  导入两个包括同名函数的模块

创建两个模块,一个是矩形模块,其中包括计算矩形周长和面积的函数;另一个是圆形,其中包括计算圆形周长和面积的函数。然后在另一个Python文件中导入这两个模块,并调用相应的函数计算周长和面积。具体步骤如下:

(1)创建矩形模块,对应的文件名为rectangle.py,在该文件中定义两个函数,一个用于计算矩形的周长,另一个用于计算矩形的面积,具体代码如下:

def girth(width,height):

    '''功能:计算周长

       参数:width(宽度)、height(高)

    '''

    return (width + height)*2

def area(width,height):

    '''功能:计算面积

       参数:width(宽度)、height(高)

    '''

    return width * height

if __name__ == '__main__':

    print(area(10,20))

(2)创建圆形模块,对应的文件名为circular.py,在该文件中定义两个函数,一个用于计算圆形的周长,另一个用于计算圆形的面积,具体代码如下:

import math                      # 导入标准模块math

PI = math.pi                       # 圆周率

def girth(r):

    '''功能:计算周长

       参数:r(半径)

    '''

    return round(2 * PI * r ,2 )          # 计算周长并保留两位小数

def area(r):

    '''功能:计算面积

       参数:r(半径)

    '''

    return round(PI * r * r ,2)          # 计算面积并保留两位小数

if __name__ == '__main__':

    print(girth(10))

(3)创建一个名称为compute.py的Python文件,在该文件中,首先导入矩形模块的全部定义,然后导入圆形模块的全部定义,最后分别调用计算矩形周长的函数和计算圆形周长的函数,代码如下:

from rectangle import *                   # 导入矩形模块

from circular import *                      # 导入圆形模块

if __name__ == '__main__':

    print("圆形的周长为:",girth(10))           # 调用计算圆形周长的函数

    print("矩形的周长为:",girth(10,20))        # 调用计算矩形周长的函数

执行compute.py文件,将显示如图4所示的结果。

图4  执行不同模块的同名函数时出现异常

从图4中可以看出执行步骤(3)的第5行代码时出现异常,这是因为原本想要执行的矩形模块的girth()函数被圆形模块的girth()函数给覆盖了。解决该问题的方法是,不使用from…import语句导入,而是使用import语句导入。修改后的代码如下:

import rectangle as r                       # 导入矩形模块

import circular as c                         # 导入圆形模块

if __name__ == '__main__':

    print("圆形的周长为:",c.girth(10))       # 调用计算圆形周长的函数

    print("矩形的周长为:",r.girth(10,20))    # 调用计算矩形周长的函数

执行上面的代码后,将显示如图5所示的结果。

图5  正确执行不同模块的同名函数

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

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

相关文章

python--面向对象-文件读写-异常

一、继承 定义一个类时,需要使用另外一个类的方法或属性,就可以通过继承实现 object是Python的顶级类,创建类是会自动继承,就拥有object中的方法 定义格式 # 类的定义 # 旧式类定义 一般在定义单个类时使用 class 类名:name N…

SwiftUI中ContentUnavailableView的使用(iOS 17、tvOS 17推出的新组件)

iOS 17为SwiftUI带来了一个新的组件ContentUnavailableView,它允许我们向用户呈现一个空状态,而不需要创建自定义错误或者无内容视图。 ContentUnavailableView易于使用,可自定义,并且具有用于空搜索状态的预定义视图。 建议在无…

DVWA-Insecure CAPTCHA

本模块是绕过修改密码需要的验证码,验证码使用的是 Google 提供 reCAPTCHA 服务,这个服务我们使用不了,下面讲一下绕过就好了,不影响。 Low 看下后端代码,有两部分POST step1为正常过验证,step2为修改密码…

[数据集][图像分类]十二生肖分类数据集8492张12类别

数据集类型:图像分类用,不可用于目标检测无标注文件 数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):8492 分类类别数:12 类别名称:["dog","dragon&q…

全球与中国汽车张紧器市场:增长趋势、竞争格局与前景展望

汽车张紧器是保持皮带和链条适当张力以保持汽车同步运行的关键部件。其主要目的是确保正时正确,避免出现链条和链轮过度磨损、链条拍击引起的发动机噪音以及可能严重损害发动机的正时链条故障等问题,从而使链条保持在理想的张力。 汽车张紧器市场的成长是…

GNeRF论文理解

文章目录 主要解决什么问题?结构设计以及为什么有效果?个人想法。 主要解决什么问题? 本文主要想要解决的问题是 如何使用uncalibrated的照片来进行Nerf重建。虽然说现在已经有了一些方式可以对相机位姿进行估计和优化,但是他们限…

解锁下载EasyRecovery2024电脑版软件 3步破解下载秘籍!

在数字时代,数据已成为我们生活中不可或缺的一部分。无论是工作中的重要文件,还是珍贵的家庭照片和视频,数据都承载着我们的回忆和努力。然而,数据的丢失也是我们常常遇到的问题。硬盘损坏、误删除、病毒攻击等都可能导致数据丢失…

如何将本地项目上传到GitHub

在软件开发过程中,将本地项目上传到GitHub是一个非常重要的步骤。它不仅可以帮助你备份代码,还可以让你与团队成员共享和协作开发。本文将详细介绍如何将本地项目上传到GitHub。 前提条件 已安装Git。如果还没有安装,请参考Git官网进行下载…

记忆化搜索汇总

记忆化搜索简介 记忆化搜索(Memoization Search):是一种通过存储已经遍历过的状态信息,从而避免对同一状态重复遍历的搜索算法。 记忆化搜索是动态规划的一种实现方式。在记忆化搜索中,当算法需要计算某个子问题的结果…

代理记账公司哪家好,深度剖析与选择指南

代理记账,作为企业会计管理和运营的重要环节,已经逐渐被越来越多的企业所重视,在众多的代理记账公司中,如何选择一家专业、高效且值得信赖的代理记账机构呢?以下是一些深度解析和推荐。 公司的规模 规模较大的代理记账…

局域网怎么设置路由器?

在搭建局域网的过程中,设置路由器是非常重要的一步。正确地设置路由器可以确保局域网的正常运行,并且可以更好地保护网络安全。以下是一些关于如何设置路由器的指南。 第一步:获取路由器 您需要获得一台适合您需求的路由器设备。选择一款性能…

从C到C++,C++入门(2)

在C入门篇(1)中,博主为大家简单介绍了什么是C,以及C中的关键字,命名空间,输入与输出和缺省参数的相关知识。今天就让我们继续一起学习C的基础知识点吧!! 1.函数重载 1.1函数重载的概…

通过 .NET COM 互操作设置 System.Drawing.Color

1. 问题背景 在尝试使用 Aspose.Words 库执行 COM 互操作时,遇到了一个关键问题:无法设置颜色。理论上,可以通过向 DocumentBuilder.Font.Color 赋值来设置颜色,但尝试时却出现了 OLE 错误 0x80131509。 以下代码示例演示了这个…

Python Flask 入门开发

Python基础学习: Pyhton 语法基础Python 变量Python控制流Python 函数与类Python Exception处理Python 文件操作Python 日期与时间Python Socket的使用Python 模块Python 魔法方法与属性 Flask基础学习: Python中如何选择Web开发框架?Pyth…

杨校老师项目之SpringBoot整合Vue超市管理系统

1.获取代码: 有偿获取:mryang511688 2.技术栈 SpringBoot MySQL mybatis Plus Redis 摘 要 随着信息化时代的到来,管理系统都趋向于智能化、系统化,超市进销存系统也不例外,但目前国内仍都使用人工管理&#xff…

运维开发(DevOps):加速软件交付的关键方法

1. 什么是运维开发 运维开发(DevOps)是将软件开发(Development)与信息技术运维(Operations)的流程整合在一起的实践方法。DevOps的目标是通过增强开发和运维团队之间的协作,提高软件产品的发布…

【全开源】小区物业收费管理系统小程序(FastAdmin+UniApp)

便捷生活新选择 一款基于FastAdminUniApp开发的一款物业收费管理小程序。包含房产管理、收费标准、家属管理、抄表管理、在线缴费、业主公告、统计报表、业主投票、可视化大屏等功能。为物业量身打造的小区收费管理系统,贴合物业工作场景,轻松提高物业费…

C#开源实用的工具类库,集成超过1000多种扩展方法

前言 今天大姚给大家分享一个C#开源(MIT License)、免费、实用且强大的工具类库,集成超过1000多种扩展方法增强 .NET Framework 和 .NET Core的使用效率:Z.ExtensionMethods。 直接项目引入类库使用 在你的对应项目中NuGet包管…

【ARM Cache 及 MMU 系列文章 6 -- Cache 寄存器 CTR | CLIDR | CCSIDR | CSSELR 使用详解 1】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 Cache 常用寄存器Cache CSSELR 寄存器Cache CSSELR 使用场景Cache CSSELR 操作示例 Cache CLIDR 寄存器LoUU 介绍LoUU 使用 LoUIS 介绍CLIDR 使用 Cache CCSIDR 寄存器 Cache 常用寄存…

如何使用 DANN 改进神经网络

文章目录 一、说明二、语言模型真的理解语言吗?三、了解分配转变3.1 样本选择偏差3.2 非静止环境3.3 领域适配挑战3.4 概念漂移 四、对领域对抗训练的介绍 一、说明 由于其多功能性,神经网络是大多数现代机器学习管道的主要内容。他们处理非结构化数据的…