千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > python中 from…import… 、from…import * 与import的区别?

python中 from…import… 、from…import * 与import的区别?

来源:千锋教育
发布人:xqq
时间: 2023-10-12 23:31:17 1697124677

一、python中 from…import… 、from…import * 与import的区别

1、定义不同

import: 导入整个模块,需要使用模块名前缀来访问模块中的函数、变量等。from … import …: 从一个模块中引入指定的对象或全部对象到当前命名空间中。from … import *: 从一个模块中引入所有的变量、函数和类到当前命名空间中。

2、在变量、方法引用上不同

import: 在使用导入的模块中的方法、变量时,需要以模块名作为前缀,例如math.sqrt(2)。from … import …: 可以访问引入的对象,而不需要使用它的模块名前缀。例如,from math import sqrt后,就可以使用sqrt(2)。from … import *: 可以直接访问该模块中的所有方法和变量,不需要使用任何前缀,例如from math import *后,可以直接使用sqrt(2)。

3、导入对象的作用域上不同

import: 导入整个模块后,可以使用该模块中的任何对象,但必须使用模块名前缀来访问它们。from … import …: 可以直接从指定模块中导入需要的对象,这些对象会被添加到当前命名空间中,因此不需要使用模块名前缀访问它们。from … import *: 可以直接从指定模块中导入所有对象,并将它们添加到当前命名空间中。

二、Python 导包的方法

1、直接 import

最常用的方法,代码:

>>> import os>>> os.getcwd()

一般情况下,使用 import 语句导入模块已经够用的。但是在一些特殊场景中,可能还需要其他的导入方式。

2、使用import

import函数可用于导入模块,import 语句也会调用函数。其定义为:

import(name[, globals[, locals[, fromlist[, level]]]])

参数介绍:

name (required): 被加载 module 的名称globals (optional): 包含全局变量的字典,该选项很少使用,采用默认值 global()locals (optional):包含局部变量的字典,内部标准实现未用到该变量,采用默认值 – local()fromlist (Optional): 被导入的 submodule 名称level (Optional): 导入路径选项,Python 2 中默认为 -1,表示同时支持 absolute import 和 relative import。Python 3 中默认为 0,表示仅支持 absolute import。如果大于 0,则表示相对导入的父目录的级数,即 1 类似于 .;2 类似于 ..。

使用示例:

>>> os = __import__('os')>>> os.getcwd()

如果要实现 import xx as yy的效果,只要修改左值即可,如下示例,等价于 import os as myos:

>>> myos = __import__('os')>>> myos.getcwd()

上面说过的__import__是一个内建函数,既然是内建函数的话,那么这个内建函数必将存在于 __buildins__ 中,因此我们还可以这样导入 os 的模块:

>>> __builtins__.__dict__['__import__']('os').getcwd()

3、使用 importlib 模块

importlib 是 Python 中的一个标准库,importlib 能提供的功能非常全面。它的简单示例:

>>> import importlib>>> myos=importlib.import_module("os")>>> myos.getcwd()

4、使用 imp 模块

imp 模块提供了一些 import 语句内部实现的接口。例如模块查找find_module、模块加载load_module等等(模块的导入过程会包含模块查找、加载、缓存等步骤)。可以用该模块来简单实现内建的 import函数功能:

>>> import imp>>> file, pathname, desc = imp.find_module('os')>>> myos = imp.load_module('sep', file, pathname, desc)>>> myos>>> myos.getcwd()

从 python 3 开始,内建的 reload 函数被移到了 imp 模块中。而从 Python 3.4 开始,imp 模块被否决,不再建议使用,其包含的功能被移到了 importlib 模块下。即从 Python 3.4 开始,importlib 模块是之前 imp 模块和 importlib 模块的合集。

5、使用 execfile

在 Python 2 中有一个 execfile 函数,利用它可以用来执行一个文件。语法如下:

execfile(filename[, globals[, locals]])

参数介绍:

filename:文件名。globals:变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。locals:变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
>>> execfile("/usr/lib64/python2.7/os.py")>>> >>> getcwd()

6、使用 exec 执行

execfile 只能在 Python2 中使用,Python 3.x 里已经删除了这个函数。但是原理值得借鉴,你可以使用 open … read 读取文件内容,然后再用 exec 去执行模块。示例如下:

>>> with open("/usr/lib64/python2.7/os.py", "r") as f:...     exec(f.read())... >>> getcwd()

7、import_from_github_com

有一个包叫做import_from_github_com,从名字上很容易得知,它是一个可以从 github 下载安装并导入的包。为了使用它,你需要做的就是按照如下命令使用pip 先安装它。这个包使用了PEP 302中新的引入钩子,允许你可以从github上引入包。这个包实际做的就是安装这个包并将它添加到本地。你需要 Python 3.2 或者更高的版本,并且 git 和 pip 都已经安装才能使用这个包。pip 要保证是较新版本,如果不是请执行如下命令进行升级。

$ python3 -m pip install --upgrade pip

确保环境 ok 后,你就可以在 Python shell 中使用import_from_github_com。示例如下:

>>> from github_com.zzzeek import sqlalchemyCollecting git+https://github.com/zzzeek/sqlalchemyCloning https://github.com/zzzeek/sqlalchemy to /tmp/pip-acfv7t06-buildInstalling collected packages: SQLAlchemyRunning setup.py install for SQLAlchemy ... doneSuccessfully installed SQLAlchemy-1.1.0b1.dev0>>> locals(){'__builtins__': , '__spec__': None,'__package__': None, '__doc__': None, '__name__': '__main__','sqlalchemy': ,'__loader__': }>>>

看了import_from_github_com的源码后,你会注意到它并没有使用importlib。实际上,它的原理就是使用 pip 来安装那些没有安装的包,然后使用Python的import()函数来引入新安装的模块。

三、Python的发展历程

1995年,Guido van Rossum在弗吉尼亚州的国家创新研究公司(CNRI)继续他在Python上的工作,并在那里发布了该软件的多个版本。

2000年5月,Guido van Rossum和Python核心开发团队转到BeOpen.com并组建了BeOpen PythonLabs团队。同年十月,BeOpen PythonLabs团队转到Digital Creations(现为Zope Corporation)。

2001年,Python软件基金会(PSF)成立,这是一个专为拥有Python相关知识产权而创建的非营利组织。Zope Corporation是PSF的赞助成员。

Python的创始人为荷兰人吉多·范罗苏姆(Guido van Rossum)。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中单词Python(意为大蟒蛇)作为该编程语言的名字,是因为英国20世纪70年代首播的电视喜剧《蒙提·派森的飞行马戏团》(Monty Python’s Flying Circus)。

Python已经成为较受欢迎的程序设计语言之一。自从2004年以后,python的使用率呈线性增长。Python 2于2000年10月16日发布,稳定版本是Python 2.7。Python 3于2008年12月3日发布,不完全兼容Python 2。 2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。

延伸阅读1:Python支持以下类型的运算符

算术运算符比较(关系)运算符赋值运算符逻辑运算符位运算符成员运算符身份运算符运算符优先级
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT