对于一个真实的 Python 程序,我们不可能自己完成所有的工作,通常都需要借助于第三方类库。此外,也不可能在一个源文件中编写整个程序的源代码,这些都需要以模块化的方式来组织项目的源代码。

使用 import 导入模块的语法,但实际上 import 还有更多详细的用法,主要有以下两种:import 模块名1 [as 别名1], 模块名2 [as 别名2],…: 导入整个模块。

from 模块名 import 成员名1 [as 别名1],成员名2 [as 别名2],…: 导入模块中指定成员。

上面两种 import 语句的区别主要有以下几点:

第一种 import 语句导入整个模块内的所有成员(包括变量、函数、类等);第二种 import 语句只导入模块内的指定成员(除非使用 form 模块名 import *,但通常不推荐使用这种语法)。

当使用第一种 import 语句导入模块中的成员时,必须添加模块名或模块别名前缀;使用第二种 import 语句导入模块中的成员时,无须使用任何前缀,直接使用成员名或成员别名即可。

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

import sys

# 使用sys模块名作为前缀来访问模块中的成员

print(sys.argv[0])

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

运行上面程序,可以看到如下输出结果(sys 模块下的 argv 变量用于获取运行 Python 程序的命令行参数,其中 argv[0] 用于获取该 Python 程序的程序名)。import test.py

在导入整个模块时可以为模块指定别名。例如如下程序:# 导入sys整个模块,并指定别名为s

import sys as s

# 使用s模块别名作为前缀来访问模块中的成员

print(s.argv[0])

第2行代码在导入 sys 模块时才指定了别名 s,因此在程序中使用 sys 模块内的成员时,必须添加模块别名 s 作为前缀。运行该程序,可以看到如下输出结果:import test2.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 变量代表平台上的路径分隔符):import test3.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 平台上运行该程序,可以看到如下输出结果:import_test4 .py

\

接下来介绍使用 from...import 导入模块内指定成员的用法。下面程序使用 from...import 导入模块成员的最简单语法来导入指定成员:# 导入sys模块的argv成员

from sys import argv

# 使用导入成员的语法,直接使用成员名访问

print(argv[0])

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

使用 from...import 导入模块成员时也可为成员指定别名,例如如下程序:# 导入sys模块的argv成员,并为其指定别名v

from sys import argv as v

# 使用导入成员(并指定别名)的语法,直接使用成员的别名访问

print(v[0])

第 2 行代码导入了 sys 模块中的 argv 成员,并为该成员指定别名 v,这样即可在程序中通过别名 v 使用 argv 成员,无须使用任何前缀。运行该程序,可以看到如下输出结果:from import test2.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 的版本号):from import test3.py

3.6

在使用 from...import 同时导入多个模块成员时也可指定别名,同样使用 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 成员,无须使用任何前缀。

在使用 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()函数

如何在python导入包_python如何引入包相关推荐

  1. python 模块与包_Python 模块与包

    模块:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1.使用python编写的代码(.py文件) 2.已被编 ...

  2. python导入模块_Python导入

    python导入模块 Python import statement is used to import modules that we want to use in our program. Pyt ...

  3. python序列解包_python中解包

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 序列解包(sequence unpacking)是python中非常重要和常用的 ...

  4. python如何更新包_python如何更新包 python更新包代码示例

    python如何更新包?本篇文章小编给大家分享一下python更新包代码示例,代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. Python安装新包,pip是 ...

  5. python如何更新包_python如何更新包

    Python安装新包,pip是很好用的安装工具. pip list 可以查询所有已安装的包和版本.怎么知道本地安装包的版本是否有可以更新的新版本呢?通过pip list函数可以实现.具体实现方式如下: ...

  6. python抓包之后、如何解析包_python如何抓包

    系统环境:windows7,选择windows系统是因为我对自己平时日常机器上的流量比较感兴趣 python环境:python2.7 ,这里不选择python3的原因,是因为接下来要用到的scapy包 ...

  7. python原生如何实现抓包_python实现抓包、解析流程,超过瘾!

    importosimportdpktimportsocketimportdatetimeimportuuidfrom scapy.sendrecv importsnifffrom scapy.util ...

  8. python好用的模块和包_Python模块和包详细讲解与实例分析

    一丶模块 我们经常说模块模块的,究竟什么是模块呢? 一个模块就是包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀 但其实import加载的模块分为四个通用类别: 1.使用Pyth ...

  9. python脚本常见包_python之各种包

    python之各种包 因为需要解决不同的需求,所以,python准备了丰富的模块.只要导入就可以使用,简洁高效. collection模块 具名元组(namedtuple),可以给指定位置传参,一一赋 ...

最新文章

  1. 人工智能共享停车走向全球
  2. C#中使用键值对存取值并使用Linq通过key获取value
  3. 常用30种MySQL查询语句优化方法
  4. [PAT乙级]1023 组个最小数
  5. 敏捷项目管理流程-Scrum框架最全总结
  6. Spark UI (基于Yarn) 分析与定制
  7. 行连接和列连接的区别
  8. android.dig机器人采访,机器人学导论心得 - osc_jjc36t9p的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. win10+Python3.7.3+OpenCV3.4.1入门学习(十一 图像金字塔)————11.1 图像金字塔理论基础
  10. w7系统计算机更改用户名,Win7怎么更改用户名
  11. SM9学习笔记与图解(合集)
  12. 学硕上几年学计算机,研究生一般要读几年毕业
  13. 错误记录:FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecate
  14. PostgreSQL 9.1 选项standard_conforming_strings默认值为on
  15. vb3.0 升级vb6.0_将VB6升级到VB.NET(性能改进)
  16. jQuery+PHP实现的砸金蛋中奖程序
  17. 通达信 数据格式 java_通达信日线 数据格式
  18. OpenCV实战——文本检测
  19. liquibase学习和使用
  20. item_get - 根据ID取商品详情

热门文章

  1. html获取一条一条的li,html – 在一个li中定位一个span
  2. linux系统下 新建文件夹,使用ln命令在Linux系统中创建连接文件
  3. linux 脚本自动添加防火墙规则
  4. redis zset转set 反序列化失败_7000字 Redis 超详细总结、笔记!建议收藏
  5. 对BottomTagFragment的理解
  6. 基于JAVA+SpringMVC+Mybatis+MYSQL的在线考试系统
  7. 基于JAVA+SpringBoot+Mybatis+MYSQL的医院管理系统
  8. 基于JAVA+SpringMVC+Mybatis+MYSQL的酒店客房管理系统
  9. SharePoint自动化系列——通过PowerShell创建SharePoint Lists
  10. 理解T-SQL: 触发器