import使一个变量名引用整个模块对象,因此必须通过模块名称来得到该模块的属性,比如我们导入一个数学计算的模块 math:

 import mathprint math.pi #导出圆周率的值>>>3.14159265359

我们导入math模块,在python模块学习中我们会知道,这样做会得到名math的对象,这个模块对象包含了pi这样的常量,以及一些其它的方法。我们如果直接访问 pi,不加math这个前缀会发生什么情况呢?

print piTraceback (most recent call last):File "<pyshell#6>", line 1, in <module>print pi
NameError: name 'pi' is not defined

程序抛出了一个名为“NameError”的错误。这个时候我们可以用from这个方法来实现可以直接用pi这个方法。from会把变量名复制到另一个作用域,所以它就可以直接在脚本中使用复制后的变量名,而不用通过模块,例如:

from math import pi
print pi
>>>3.141592653589793

这样我们就可以直接输出 pi的值了,而不会报错,不需要加那个模块名加句号。有的朋友可能感觉还是比较麻烦,有会有更快速、更省事的Python模块导入方法呢?还真有。

from math import *
pi
cos(pi)
>>>3.141592653589793
>>> -1.0

这样就不需要一个一样导入模块内部的方法了,一次性的将所有python 调用函数方法导入,好处是代码看起来非常简洁,但是如果同时导入多个模块,要考虑模块方法名冲突等这些问题,至于怎么样使用,要看你的使用环境 。

from :https://www.iplaypy.com/jinjie/from-import.html

  • from语句有破坏命名空间的潜质。如果使用from导入变量,变量碰巧和作用域中现有变量重名,变量就会被悄悄的覆盖掉。
  • 使用import语句时就不存在这种问题,因为必须通过模块名才能获取其内容。不过,使用from时,只要你了解并预料到可能发生这种事,在实际情况下这就不是一个大问题了,尤其是当你明确列出导入变量名时(例如,from module import x, y, z)。
  • 另一方面,from module import *形式的确可能破坏命名空间,让变量名难以理解,尤其是在导入一个以上的文件时。

  比较务实的建议是:简单的模块一般倾向于使用import,而不是from。多数的from语句是用于明确列举想要的变量,而且限制在每个文件中只用一次from *形式。这样一来,任何无定义的变量名都可以认为是存在于from *所引用的模块内。当你必须使用两个不同模块内定义的相同变量名变量时,才真的必须使用import,这种情况下不能使用from。

二、Python中的模块和包

每个.py文件都是可以认为是一个Python模块,.py文件中可以包含类、方法、变量和常量(Python还没有严格意义上的常量,只是约定大写的变量作为常量),文件内也可以直接写所有的逻辑语句并在加载时从上之下直接执行,这与其他解释型语言是类似的。例如我们选择在文件夹ModuleAndPackage中创建一个文本文件person.py文件即创建了一个简单的Python模块,

Python需要去某些固定的路径下去查找Python模块,上面我们设置在ModuleAndPackage中查找。但是这些路径下也是有目录层次的,Python是如何查找子目录中的模块呢?特别是引用第三方包时,我们也需要知道一定的层次关系。实际上,Python通过目录和文件构建包结构,并且包是层层嵌套的,这样就构成了包内的访问路径。例如我们在ModuleAndPackage文件夹下,创建一个文件夹animal,里面创建一个文本文件pet.py。

那么如何引用pet.py这个模块呢?按照Python的约定,需要在animal文件夹中创建名为__init__.py的空文本文件,以标识animal文件夹是一个包。倘若animal文件夹内还有文件夹作为包,也必须包含__init__.py文件。这样就层层标识了访问的路径。

简答来说,只要Python模块在其执行环境配置的搜索路径中,并且其所在位置是包结构的一部分,那么我们就可以引用该模块。

from:https://www.cnblogs.com/qingspace/archive/2016/03/16/5284480.html

Python中在脚本中引用其他文件函数的方法

在导入文件的时候,Python只搜索当前脚本所在的目录,加载(entry-point)入口脚本运行目录和sys.path中包含的路径例如包的安装地址。所以如果要在当前脚本引用其他文件,除了将文件放在和脚本同一目录下,还有以下几种方法。

1. 将文件所在位置添加到sys.path中

通过sys模块的append方法在Python环境中增加搜索路径。

import sys
sys.path.insert(0, '/path/to/application/app/folder')
sys.path.append('/path/to/application/app/folder')#2个都行import file

./ 当前目录。    ../ 父级目录。     / 根目录。

2. 在文件目录下新建__init__.py文件然后调用文件

from application.app.folder.file import func_name

__init__.py文件的作用

该文件的主要作用使初始化Python包。如果目录下面包含了该文件,Python解释器就会将该目录当做一个包,下一步就可以使用import语句在别的.py脚本中引用该目录下的文件。一个标准Python模块的结构如下所示:

package/__init__.pyfile.pyfile2.pysubpackage/__init__.pysubmodule1.pysubmodule2.py

__init__文件可以为空但可以用来建立对包的需求。一般来说会在该文件中写那些类,函数等需要被导入到包水平,从而可以被方便的引用。__init__文件提前准备包内需要被引用的各个模块中的变量,类似于向外部引用者暴露包内接口。

1、如果file.py文件中有一个File类,在__init__.py文件中啥都没写时引用File类需要这样操作:

from package.file import File

2、如果在__init__.py文件中将file导入包,那就在包水平可以直接引用File类:

# in your __init__.py
from file import File# in your script
from package import File

此外,还需要注意的一点是:如果解释器在__init__.py文件中观察到了__all__变量,那么在运行from package import *时就只会引入__all__变量中列出的那些模块。例如:如果想在上述结构的只引入submodule1模块,那么可以在subpackage/__init__.py文件中定义__all__ = ['submodule1'],当引用subpackage时from subpackage import *就只引入了submodule1模块。

from:https://www.cnblogs.com/arkenstone/p/5609063.html

Python的from和import用法相关推荐

  1. import的用法python_Python导入模块,Python import用法(超级详细)

    Python导入模块,Python import用法(超级详细) 使用 Python 进行编程时,有些功能没必须自己实现,可以借助 Python 现有的标准库或者其他人提供的第三方库.比如说,在前面章 ...

  2. python基础 (一)import用法

    python基础 (一)import用法 版权声明:本文参考CSDN博主「易冷cheng」的文章进行精简 原文链接:https://blog.csdn.net/qq_41092406/article/ ...

  3. (Python)numpy的argmax用法

    (Python)numpy的argmax用法 解释 还是从一维数组出发.看下面的例子. import numpy as np a = np.array([3, 1, 2, 4, 6, 1]) prin ...

  4. python装饰器原理-Python装饰器原理与用法分析

    这篇文章主要介绍了Python装饰器原理与用法,结合实例形式分析了Python装饰器的概念.原理.使用方法及相关操作注意事项,需要的朋友可以参考下 本文实例讲述了Python装饰器原理与用法.分享给大 ...

  5. python装饰器原理-python装饰器原理与用法深入详解

    本文实例讲述了python装饰器原理与用法.分享给大家供大家参考,具体如下: 你会Python嘛? 我会! 那你给我讲下Python装饰器吧! Python装饰器啊?我没用过哎 以上是我一个哥们面试时 ...

  6. python控制画笔尺寸,Python画笔的属性及用法详解

    画笔有颜色.画线的宽度等属性. 1.turtle.pensize():设置画笔的宽度: 2.turtle.pencolor():没有参数传入返回当前画笔颜色:传入参数设置画笔颜色,可以是字符串如&qu ...

  7. python自然语言处理案例-Python自然语言处理 NLTK 库用法入门教程【经典】

    本文实例讲述了Python自然语言处理 NLTK 库用法.分享给大家供大家参考,具体如下: 在这篇文章中,我们将基于 Python 讨论自然语言处理(NLP).本教程将会使用 Python NLTK ...

  8. Python Pillow(PIL)库的用法介绍(二)

    Python Pillow(PIL)库的用法介绍(二) 在上一篇文章中介绍了Pillow库的一些基本用法,参考:https://blog.csdn.net/weixin_43790276/articl ...

  9. python中config方法作用,python中ConfigParse模块的用法

    本文实例讲述了python中ConfigParse模块的用法,分享给大家供大家参考.具体方法如下: 写配置一般用ConfigParse.RawConfigParse类 读配置用ConfigParse. ...

  10. python中heapq的库是什么_详解Python中heapq模块的用法

    详解Python中heapq模块的用法 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  详解Python中heapq模块的用法.txt ] (友情提示:右键点上行t ...

最新文章

  1. 【翻译】.NET 5 Preview5发布
  2. hanlp源码解析之中文分词算法
  3. java水电费收费系统_基于jsp的电费管理系统-JavaEE实现电费管理系统 - java项目源码...
  4. HTML5网页设计基础——表单样式
  5. 亚马逊 站内广告数据分析
  6. Pr视频剪辑出现红线
  7. Java SE 正则表达式
  8. npm i 安装依赖 报错 npm ERR! code EINTEGRITY npm ERR! sha512-*****==.(12008 bytes) 问题处理
  9. ISA, x86,x86_64, AMD64, 指令集等名词解析
  10. 餐厅菜单html代码,html5css3 3D餐厅菜单概念_订餐菜单选择工具
  11. 看服务器被入侵如何排查?如何防止服务器被入侵?
  12. ccs用C语言进行printf时,PIC单片机CCS之C语言(#FUSES的用法)
  13. C语言中关键字void的用法
  14. 中科大科学岛计算机复试,2020年中国科学技术大学研究生院科学岛分院复试办法及复试内容...
  15. 牛客——小a与星际探索
  16. 最好用的图像处理软件推荐:风格迥异的靠谱专业还简单的图像处理软件首选Chasys Draw IES
  17. 连锁实体门店+收银系统的解决方案
  18. 一文读懂HTML的头部内容,希望有所帮助
  19. iOS 知识点整理 (持续更新...)
  20. 在这个炎炎夏日,谁对你最好?

热门文章

  1. 将表中一整列数据都生成五笔和拼音
  2. Linux 系统升级蝉道
  3. [转载]“有教无类”是孔子的招生口号
  4. 机械工业出版社6000册图书都有哪些?
  5. 爬虫->TpImgspider
  6. golang正则匹配中文字符,查询中文字符会panic退出的问题
  7. Rayman的绝顶之路——Leetcode每日一题打卡19
  8. 燕大学子知网使用手册
  9. 流程图与活动图的区别与联系
  10. 苹果更新失败无法连接服务器未响应,iPhone 更新失败怎么办?更新 iOS 常见的错误代码及解决方法(二)...