模块导入的几种方式

曹嵩
• 阅读 1268

概念

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

模块导入

模块可以导入其它模块,习惯上把所有 import语句放在模块的开头(不要求)。模块导入的方式有几种:

  • 方式一:使用 import 语句来引入模块
import module1[, module2[,... moduleN]]

# 例如导入一个path模块
import path

直接使用关键词import,后面跟具体的模块名称,就可以导入某一个模块。同一个模块不管执行了多少次import,都只会被导入一次,以防止模块被一遍又一遍的执行。
模块引入好后,如果要调用模块中的函数,必须如下:

模块名.函数名
  • 方式二:使用from…import 语句来引入模块
from modname import name1[, name2[, ... nameN]]

# 例如要导入pprint模块的pprint
from pprint import pprint

在使用import语句导入模块时会将整个模块引入进来,而使用from...import 语句则是从模块中导入一个指定的部分到当前命名空间中。如上面代码中则只会导入pprint模块中的pprint函数,其他函数并不会导入。

import语句引入模块后,如果需要使用模块里的函数方法,则需要加上模块的限定名字,而from...import语句则不用加模块的限定名字,直接使用其函数方法

# 第一种方式
import pprint
pprint.pprint("hello world")

# 第二种方式
from pprint import pprint
pprint("hello world")
  • 方式三:使用from…import* 语句来引入模块

from…import* 语句表示把一个模块的所有内容全都导入到当前的命名空间。

from modname import *

在多数情况下,Python程序员都不会使用这个功能,因为它在解释器中引入了一组未知的名称,而它们很可能会覆盖一些你已经定义过的东西。
注意通常情况下从一个模块或者包内调入 * 的做法是不太被接受的, 因为这通常会导致代码的可读性很差。不过,在交互式编译器中为了节省打字可以这么用。

模块的好处

  • 大大提高了代码的可维护性;
  • 代码不必从零开始,一个模块编写完毕之后,其他模块可以直接调用,节约了工作时间;
  • 避免函数名称和变量名称重复,在不同的模块中可以存在相同名字的函数名和变量名,但是尽量不要和系统内置的模块名称重复;

__name__属性

一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。
每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入。

if __name__ == "__main__":
    print("模块自身在运行")

模块搜索路径

搜索路径是由一系列目录名组成的,Python解释器就依次从这些目录中去寻找所引入的模块。当一个模块被导入的时候,模块的搜索路径为:

  • 程序的根目录
  • PYTHONPATH环境变量设置的目录
  • 标准库的目录
  • 任何能够找到的.pth文件的内容
  • 第三方扩展的site-package目录

PYTHONPATH 变量

PYTHONPATH是Python中一个重要的环境变量,用于在导入模块的时候搜索路径,可以通过如下方式访问:

import sys
sys.path

作为环境变量,PYTHONPATH 由装在一个列表里的许多目录组成。PYTHONPATH 的语法和 shell 变量 PATH 的一样。
在 Windows 系统,典型的 PYTHONPATH 如下:

set PYTHONPATH=c:\python37\lib;
点赞
收藏
评论区
推荐文章
半臻 半臻
4年前
Python基础4——模块与包
12模块与包模块通俗地理解为.py文件,里面定义了变量、函数和类。需要的时候就可以导入这些模块。执行步骤1.在python模块加载路径中查找相应的模块文件2.将模块文件编译成中间代码3.执行模块文件中的代码12.1模块分类1.内置模块,也叫标准库,比如说random,time,大概有200多个2.第三方模块,也称为第三方库,使用pipins
Python进阶者 Python进阶者
4年前
浅析Python模块的引入和调用
大家好,我是IT共享者,人称皮皮。这篇文章我们来浅析Python模块的引入和调用。一、前言Python中的模块,有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt函数,必须用语句include引入math.h这个头文件,否则是无法正常进行调用的。那么在Python中,如果要引用一些其他的函数,该怎么处理呢?在Python中有一个概念叫做模块(mod
CuterCorley CuterCorley
4年前
商业数据分析从入门到入职(8)Python模块、文件IO和面向对象
前言本文先介绍了Python中程序、模块和包的基本使用,并在此基础上介绍了Python标准库。然后详细介绍了Python中的文件IO操作,包括文本文件、二进制文件的读写和其他IO操作。最后介绍了面向对象,包括类的定义、继承的使用、鸭子类型和魔法方法。一、程序、模块和包1.自定义模块和包之前我们使用的.ipynb文件都不是纯Python文件,
Stella981 Stella981
4年前
Python常用模块
一、什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。  但其实import加载的模块分为四个通用类别:   1使用python编写的代码(.py文件)  2已被编译为共享库或DLL的C或C扩展  3包好一组模块的包  4使用C编写并链接到
Stella981 Stella981
4年前
Python何时执行装饰器
装饰器的一个关键特性是,它们在被装饰的函数定义之后立即运行。这通常是在导入时(即Python加载模块时),如示例72中的registration.py模块所示。  示例72registration.py模块registrydefregister(func):print(
Wesley13 Wesley13
4年前
python3.6虚拟环境以及flask的安装(常见问题)
准备基于python进行web应用开发Python3.3以上的版本通过venv模块原生支持虚拟环境,可以代替Python之前的virtualenv。该venv模块提供了创建轻量级“虚拟环境”,提供与系统Python的隔离支持。每一个虚拟环境都有其自己的Python二进制(允许有不同的Python版本创作环境),并且可以拥有自己独立的一套Python包
Stella981 Stella981
4年前
Python调用C语言函数
在C调用Python模块时需要初始化Python解释器,导入模块等但Python调用C模块却比较简单,ctypes模块提供了和C语言兼容的数据类型和函数来加载dll或so文件,因此在调用时不需对源文件做任何的修改1.编写C语言代码,可参考https://www.cnblogs.com/zhouzhishuai/p/9529487.html(ht
Stella981 Stella981
4年前
Python基础(八)
1模块1.1模块模块是一个python文件,其中包含对象定义与语句等.多个模块再加上\_\_init\_\_.py就变成了一个包.1.2模块存在形式模块可以分成两种:非内置模块与内置模块.1.2.1非内置模块非内置模块以.py文件的形式存在,放在对应的包下.1.
可莉 可莉
4年前
18.Python模块包(pycharm右键创建文件夹和python package的区别)中__init__.py文件的作用
原来在python模块的每一个包中,都有一个\_\_init\_\_.py文件(这个文件定义了包的属性和方法)然后是一些模块文件和子目录,假如子目录中也有\_\_init\_\_.py那么它就是这个包的子包了。当你将一个包作为模块导入(比如从 xml导入 dom )的时候,实际上导入了它的 \_\_init\_\_.py 文件。一个包是一个带有特殊文
小万哥 小万哥
2年前
Python 包管理器入门指南
什么是PIP?PIP是Python包管理器,用于管理Python包或模块。注意:如果您的Python版本是3.4或更高,PIP已经默认安装了。什么是包?一个包包含了一个模块所需的所有文件。模块是您可以包含在项目中的Python代码库。检查是否安装了PIP在
马尚 马尚
1年前
python识别验证码
导入所需模块和库:导入了用于发送HTTP请求、处理正则表达式、Base64编码等功能的Python模块。pythonimportrequestsimporttimeimportjsonimportreimportbase64定义函数解析Cookie字符串: