Python导入模块,Python import用法

news2025/3/14 23:59:33

使用 Python 进行编程时,有些功能没必须自己实现,可以借助 Python 现有的标准库或者其他人提供的第三方库。比如说,在前面章节中,我们使用了一些数学函数,例如余弦函数 cos()、绝对值函数 fabs() 等,它们位于 Python 标准库中的 math(或 cmath)模块中,只需要将此模块导入到当前程序,就可以直接拿来用。

前面章节中,已经看到使用 import 导入模块的语法,但实际上 import 还有更多详细的用法,主要有以下两种:

  1. import 模块名1 [as 别名1], 模块名2 [as 别名2],…:使用这种语法格式的 import 语句,会导入指定模块中的所有成员(包括变量、函数、类等)。不仅如此,当需要使用模块中的成员时,需用该模块名(或别名)作为前缀,否则 Python 解释器会报错。

  1. from 模块名 import 成员名1 [as 别名1],成员名2 [as 别名2],…: 使用这种语法格式的 import 语句,只会导入模块中指定的成员,而不是全部成员。同时,当程序中使用该成员时,无需附加任何前缀,直接使用成员名(或别名)即可。

注意,用 [] 括起来的部分,可以使用,也可以省略。

import 模块名 as 别名

下面程序使用导入整个模块的最简单语法来导入指定模块:

# 导入sys整个模块
import sys
# 使用sys模块名作为前缀来访问模块中的成员
print(sys.argv[0])

上面第 2 行代码使用最简单的方式导入了 sys 模块,因此在程序中使用 sys 模块内的成员时,必须添加模块名作为前缀。

运行上面程序,可以看到如下输出结果(sys 模块下的 argv 变量用于获取运行 Python 程序的命令行参数,其中 argv[0] 用于获取当前 Python 程序的存储路径):

C:\Users\mengma\Desktop\hello.py

导入整个模块时,也可以为模块指定别名。例如如下程序:

# 导入sys整个模块,并指定别名为s
import sys as s
# 使用s模块别名作为前缀来访问模块中的成员
print(s.argv[0])

第 2 行代码在导入 sys 模块时才指定了别名 s,因此在程序中使用 sys 模块内的成员时,必须添加模块别名 s 作为前缀。运行该程序,可以看到如下输出结果:

C:\Users\mengma\Desktop\hello.py

也可以一次导入多个模块,多个模块之间用逗号隔开。例如如下程序:

# 导入sys、os两个模块
import sys,os
# 使用模块名作为前缀来访问模块中的成员
print(sys.argv[0])
# os模块的sep变量代表平台上的路径分隔符
print(os.sep)

上面第 2 行代码一次导入了 sys 和 os 两个模块,因此程序要使用 sys、os 两个模块内的成员,只要分别使用 sys、os 模块名作为前缀即可。在 Windows 平台上运行该程序,可以看到如下输出结果(os 模块的 sep 变量代表平台上的路径分隔符):

C:\Users\mengma\Desktop\hello.py
\

在导入多个模块的同时,也可以为模块指定别名,例如如下程序:

# 导入sys、os两个模块,并为sys指定别名s,为os指定别名o
import sys as s,os as o
# 使用模块别名作为前缀来访问模块中的成员
print(s.argv[0])
print(o.sep)

上面第 2 行代码一次导入了sys 和 os 两个模块,并分别为它们指定别名为 s、o,因此程序可以通过 s、o 两个前缀来使用 sys、os 两个模块内的成员。在 Windows 平台上运行该程序,可以看到如下输出结果:

C:\Users\mengma\Desktop\hello.py
\

from 模块名 import 成员名 as 别名

下面程序使用了 from...import 最简单的语法来导入指定成员:

# 导入sys模块的argv成员
from sys import argv
# 使用导入成员的语法,直接使用成员名访问
print(argv[0])

第 2 行代码导入了 sys 模块中的 argv 成员,这样即可在程序中直接使用 argv 成员,无须使用任何前缀。运行该程序,可以看到如下输出结果:

C:\Users\mengma\Desktop\hello.py

导入模块成员时,也可以为成员指定别名,例如如下程序:

# 导入sys模块的argv成员,并为其指定别名v
from sys import argv as v
# 使用导入成员(并指定别名)的语法,直接使用成员的别名访问
print(v[0])

第 2 行代码导入了 sys 模块中的 argv 成员,并为该成员指定别名 v,这样即可在程序中通过别名 v 使用 argv 成员,无须使用任何前缀。运行该程序,可以看到如下输出结果:

C:\Users\mengma\Desktop\hello.py

form...import 导入模块成员时,支持一次导入多个成员,例如如下程序:

# 导入sys模块的argv,winver成员
from sys import argv, winver
# 使用导入成员的语法,直接使用成员名访问
print(argv[0])
print(winver)

上面第 2 行代码导入了 sys 模块中的 argv、 winver 成员,这样即可在程序中直接使用 argv、winver 两个成员,无须使用任何前缀。运行该程序,可以看到如下输出结果(sys 的 winver 成员记录了该 Python 的版本号):

C:\Users\mengma\Desktop\hello.py
3.6

一次导入多个模块成员时,也可指定别名,同样使用 as 关键字为成员指定别名,例如如下程序:

# 导入sys模块的argv,winver成员,并为其指定别名v、wv
from sys import argv as v, winver as wv
# 使用导入成员(并指定别名)的语法,直接使用成员的别名访问
print(v[0])
print(wv)

上面第 2 行代码导入了 sys 模块中的 argv、winver 成员,并分别为它们指定了别名 v、wv,这样即可在程序中通过 v 和 wv 两个别名使用 argv、winver 成员,无须使用任何前缀。运行该程序,可以看到如下输出结果:

C:\Users\mengma\Desktop\hello.py
3.6

不推荐使用 from import 导入模块所有成员

在使用 from...import 语法时,可以一次导入指定模块内的所有成员(此方式不推荐),例如如下程序:

#导入sys 棋块内的所有成员
from sys import*
#使用导入成员的语法,直接使用成员的别名访问
print(argv[0])
print(winver)

上面代码一次导入了 sys 模块中的所有成员,这样程序即可通过成员名来使用该模块内的所有成员。该程序的输出结果和前面程序的输出结果完全相同。

需要说明的是,一般不推荐使用“from 模块 import”这种语法导入指定模块内的所有成员,因为它存在潜在的风险。比如同时导入 module1 和 module2 内的所有成员,假如这两个模块内都有一个 foo() 函数,那么当在程序中执行如下代码时:

foo()

上面调用的这个 foo() 函数到底是 module1 模块中的还是 module2 模块中的?因此,这种导入指定模块内所有成员的用法是有风险的。

但如果换成如下两种导入方式:

import module1
import module2 as m2

接下来要分别调用这两个模块中的 foo() 函数就非常清晰。程序可使用如下代码:

#使用模块module1 的模块名作为前缀调用foo()函数
module1.foo()
#使用module2 的模块别名作为前缀调用foo()函数
m2.foo()

或者使用 from...import 语句也是可以的:

#导入module1 中的foo 成员,并指定其别名为foo1
from module1 import foo as fool
#导入module2 中的foo 成员,并指定其别名为foo2
from module2 import foo as foo2

此时通过别名将 module1 和 module2 两个模块中的 foo 函数很好地进行了区分,接下来分别调用两个模块中 foo() 函数就很清晰:

foo1() #调用module1 中的foo()函数
foo2() #调用module2 中的foo()函数

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

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

相关文章

git修改历史提交(commit)信息

我们在开发中使用git经常会遇到想要修改之前commit的提交信息,这里记录下怎么使用git修改之前已经提交的信息。一、修改最近一次commit的信息 首先通过git log查看commit信息。 我这里一共有6次commit记录。 最新的commit信息为“Merge branch ‘master’ of https:…

在线研讨会邀请 | 赋能“大”研发,助力“快”交付

在全速前进的后疫情时代,公司业务飞速发展,您,准备好了吗—— 您的开发、设计、美术等团队可能分布在全球各地,您如何帮助他们实现跨部门、跨区域的协作——让他们便捷共享、审查各种大文件(包括二进制文件&#xff0…

【GD32F427开发板试用】+ GDLink和USART2

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:夏漳 一 GDLink下载和调试 1.1 硬件结构和试用板组成 感谢极术社区提供的GD32开发板,具体的板子资源和配套软件可以在极术社区官…

09笔记 IO操作

目录 一.向一个文本文件中写入数据: 二.从一个文本文件中读取数据,并对读取的数据做简单处理。 三.二进制文件的写入操作 四.对二进制文件的读取操作 五. 举例 六.IO操作的简单应用(代码和举例都在更新和完善中) 一.向一个文本…

软件测试工程师成神之路2023整理版

版本 更新日期 审核 备注 V0.3 2020-06-01 三丰 增加3大自动化 V1.0 2021-10-01 Nick 添加持续集成 V2.0 2023-01-31 三丰 完整性能版本 我看到迄今为止最完整的软件测试技术路线梳理 Python 编程语言 自动化之Python 编程语言 编程语言介绍/编程概念讲解/环…

大数据技术架构(组件)29——Spark:Memory Model(2)

2.1.8.5、Memory addressing以上小节介绍了spark对堆的划分,根据使用目的不同,对堆进行了区域划分,并说明了spark1.6之前和之后使用的两种不同内存模型管理以及之间的区别,那么这里继续逐步分析,说到内存管理,spark是如…

CTFshow菜狗杯-misc-wp(详解 脚本 过程 全)

首先感谢ctf平台和各位出题的大佬其次感谢各位读者,对我的支持( •̀ ω •́ )y 有什么问题和建议可以私聊我废话不多话开启你们的旅程吧 这个也是我这几天才看 一些见解和思路分享给你们希望你们在旅途中玩的开心,学的开心✌( •̀ ω •́ )y杂项签到…

opencv+python物体检测【03-模仿学习】

仿照练习:原文链接 步骤一:准备图片 正样本集:正样本集为包含“识别物体”的灰度图,一般大于等于2000张,尺寸不能太大,尺寸太大会导致训练时间过长。 负样本集:负样本集为不含“识别物体”的…

无公网IP环境快解析实现医美ERP外网访问

现阶段,借助医学手段让人们变美逐渐成为时尚,医美走进公众生活的步伐也在不停加快,整个医美行业总体处于蓬勃发展之势,因此医美行业ERP需求量也不断增加。医美管理软件系统涵盖HIS、进销存、CRM、CallCenter、经营报表等模块&…

【王道数据结构】第七章| 查找 | 树

目录 一、查找 1、查找概念 2、顺序查找 3、折半查找 4、分块查找 二、树 1、B树 2、B树的基本操作 3、B树 4、散列查找及其性能分析 5、散列查找及性能分析 一、查找 1、查找概念 查找:在数据集合中寻找满足某种条件的数据元素的过程称为查找。查找…

当ChatGPT遇到前端开发

目录 一、ChatGPT是什么? 二、怎么注册使用ChatGPT? 1、注册账号 2.完成 ChatGPT 手机号码验证 3、登录 ChatGPT 账号并开始使用 三、当ChatGPT遇到前端开发 四、深思总结 AIGC 作画带给人们的惊艳感觉还未散去,ChatGPT 又来刺激人类脆…

leetcode 困难 —— N 皇后, N皇后 II,八皇后(简单递归)

(不知道为啥总是给这种简单的递归设为困难题,虽然优化部分很不错,但是题目太好过了) 题目: 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个…

java 自定义json解析注解 复杂json解析 工具类

java 自定义json解析注解 复杂json解析 工具类 目录java 自定义json解析注解 复杂json解析 工具类1.背景2、需求-各式各样的json一、一星难度json【json对象中不分层】二、二星难度json【json对象中出现层级】三、三星难度json【json对象中存在数组】四、四星难度json【json对象…

【Selenium学习】Selenium 八大定位法

1.1 ID定位HTML Tag 的 id 属性值是唯一的,故不存在根据 id 定位多个元素的情况。下面以在百度首页搜索框输入文本“python”为例。搜索框的 id 属性值为“kw”,如图1.1所示:代码如下,“find_element_by_id”方法已废弃&#xff0…

基于nodejs+vue的健身房课程预约平台

本系统主要实现了首页、个人中心、用户管理、教练管理、会员卡管理、购买会员管理、课程类型管理、课程信息管理、课程购买管理、场地信息管理、场地预约管理、系统管理,用户:首页、个人中心、购买会员管理、课程购买管理、场地预约管理,教练:首页、个人…

睿创转债,声迅转债上市价格预测

睿创转债基本信息转债名称:睿创转债,评级:AA,发行规模:15.6469亿元。正股名称:睿创微纳,今日收盘价:47.45元,转股价格:40.09元。当前转股价值 转债面值 / 转…

树生成工具泛型接口 TreeNode

1、定义泛型接口 // 实现接口需要传入两个参数&#xff0c;第一个T 为节点中的id&#xff0c;第二个R 为节点&#xff0c;TreeNode。 public interface TreeNode<T, R extends TreeNode<T, R>> {/*** 获取节点id** return 树节点id*/T id();/*** 获取该节点的父节…

读书笔记//《数据分析:企业的贤内助》

数据分析师是个杂家——作者陈哲。 为什么写这本书&#xff1f; 懂得再多知识却不会用&#xff0c;原因是缺少通往思路、方法和技能的两条路径——项目流程和项目应用&#xff08;案例&#xff09; —————————— 数据分析师的晋升空间 &#xff08;见第2章&#xff0…

NLP模型检查英语语法错误

当NLP模型产生了语法错误&#xff0c;怎么办&#xff1f;比如&#xff0c;He wants that you send him an email.没关系&#xff0c;现在可以像小时候的英语老师&#xff0c;改作文一样简单。只要装上一个专门纠正语法错误的库就可以&#xff0c;还是毫秒钟就可揪出来的那种。这…

【shell】awk、sed、sort是什么?怎么用?

目录 一、AWK 干什么用的&#xff1f; 使用起来有什么条件&#xff1f; 怎么使用&#xff1f; 二、sed 功能&#xff1f; sed怎样读取数据&#xff1f; 怎样调用sed &#xff1f; 三、sort 功能是什么&#xff1f; 命令有哪些&#xff1f; 本文只讲解了一些简略的知…