Python语言中import的使用很简单,直接使用import module_name语句导入即可。这里我主要写一下"import"的本质。

Python官方定义:Python code in one module gains access to the code in another module by the process of importing it.

1.定义:

模块(module):用来从逻辑(实现一个功能)上组织Python代码(变量、函数、类),本质就是*.py文件。文件是物理上组织方式"module_name.py",模块是逻辑上组织方式"module_name"。

包(package):定义了一个由模块和子包组成的Python应用程序执行环境,本质就是一个有层次的文件目录结构(必须带有一个__init__.py文件)。

2.导入方法

#导入一个模块

importmodel_name#导入多个模块

importmodule_name1,module_name2#导入模块中的指定的属性、方法(不加括号)、类

from moudule_name import moudule_element [as new_name]

方法使用别名时,使用"new_name()"调用函数,文件中可以再定义"module_element()"函数。

3.import本质(路径搜索和搜索路径)

moudel_name.py

#-*- coding:utf-8 -*-

print("This is module_name.py")

name= 'Hello'

defhello():print("Hello")

module_test01.py

#-*- coding:utf-8 -*-

importmodule_nameprint("This is module_test01.py")print(type(module_name))print(module_name)

运行结果:

E:\PythonImport>python module_test01.py

Thisismodule_name.py

Thisismodule_test01.py

在导入模块的时候,模块所在文件夹会自动生成一个__pycache__\module_name.cpython-35.pyc文件。

"import module_name" 的本质是将"module_name.py"中的全部代码加载到内存并赋值给与模块同名的变量写在当前文件中,这个变量的类型是'module';

module_test02.py

#-*- coding:utf-8 -*-

from module_name importnameprint(name)

运行结果;

E:\PythonImport>python module_test02.py

Thisismodule_name.py

Hello

"from module_name import name" 的本质是导入指定的变量或方法到当前文件中。

package_name / __init__.py

#-*- coding:utf-8 -*-

print("This is package_name.__init__.py")

module_test03.py

#-*- coding:utf-8 -*-

importpackage_nameprint("This is module_test03.py")

运行结果:

E:\PythonImport>python module_test03.py

Thisis package_name.__init__.py

Thisis module_test03.py

"import package_name"导入包的本质就是执行该包下的__init__.py文件,在执行文件后,会在"package_name"目录下生成一个"__pycache__ / __init__.cpython-35.pyc" 文件。

package_name / hello.py

#-*- coding:utf-8 -*-

print("Hello World")

package_name / __init__.py

#-*- coding:utf-8 -*-#__init__.py文件导入"package_name"中的"hello"模块

from . importhelloprint("This is package_name.__init__.py")

运行结果:

E:\PythonImport>python module_test03.py

Hello World

Thisis package_name.__init__.py

Thisis module_test03.py

在模块导入的时候,默认现在当前目录下查找,然后再在系统中查找。系统查找的范围是:sys.path下的所有路径,按顺序查找。

4.导入优化

module_test04.py

#-*- coding:utf-8 -*-

importmodule_namedefa():

module_name.hello()print("fun a")defb():

module_name.hello()print("fun b")

a()

b()

运行结果:

E:\PythonImport>python module_test04.py

Thisismodule_name.py

Hello

fun a

Hello

fun b

多个函数需要重复调用同一个模块的同一个方法,每次调用需要重复查找模块。所以可以做以下优化:

module_test05.py

#-*- coding:utf-8 -*-

from module_name importhellodefa():

hello()print("fun a")defb():

hello()print("fun b")

a()

b()

运行结果:

E:\PythonImport>python module_test04.py

Thisismodule_name.py

Hello

fun a

Hello

fun b

可以使用"from module_name import hello"进行优化,减少了查找的过程。

5.模块的分类

内建模块

可以通过 "dir(__builtins__)" 查看Python中的内建函数

>>> dir(__builtins__)

['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError','BytesWarning','ChildProcessError','ConnectionAbortedError','ConnectionError','ConnectionRefusedError','ConnectionResetError','DeprecationWarning','EOFError','Ellipsis','EnvironmentError','Exception','False','FileExistsError','FileNotFoundError','FloatingPointError','FutureWarning','GeneratorExit','IOError','ImportError','ImportWarning','IndentationError','IndexError','InterruptedError','IsADirectoryError','KeyError','KeyboardInterrupt','LookupError','MemoryError','NameError','None','NotADirectoryError','NotImplemented','NotImplementedError','OSError','OverflowError','PendingDeprecationWarning','PermissionError','ProcessLookupError','RecursionError','ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning','SystemError','SystemExit','TabError','TimeoutError','True','TypeError','UnboundLocalError','UnicodeDecodeError','UnicodeEncodeError','UnicodeError','UnicodeTranslateError','UnicodeWarning','UserWarning','ValueError','Warning','WindowsError','ZeroDivisionError','_','__build_class__','__debug__','__doc__','__import__','__loader__','__name__', '__package__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'bytearray', 'bytes', 'callable', 'chr','classmethod','compile','complex','copyright','credits','delattr','dict','dir','divmod','enumerate','eval','exec','exit','filter','float','format','frozenset','getattr','globals','hasattr','hash','help','hex','id','input','int','isinstance','issubclass','iter','len','license','list','locals','map','max','memoryview','min','next','object','oct','open','ord','pow','print','property','quit','range','repr','reversed','round','set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']

非内建函数需要使用"import"导入。Python中的模块文件在"安装路径\Python\Python35\Lib"目录下。

第三方模块

通过"pip install "命令安装的模块,以及自己在网站上下载的模块。一般第三方模块在"安装路径\Python\Python35\Lib\site-packages"目录下。

自定义模块

python import_Python中import机制相关推荐

  1. python多级目录import_深入理解Python中import机制

    大型项目中为了维护方便,通常使用模块化开发,模块化的过程中,就会涉及到各种包或者模块的相互导入,即使是对于有多个项目的Python开发者来说, import 也会让人困惑!本文带你深入了解python ...

  2. python文件中import pyx文件问题

    1.首先,pyx文件需要安装Cython,这里先进入自己的虚拟环境,用conda安装Cython conda install Cython 2.需要用到pyx的地方是mattnet中的mask.py ...

  3. java中import机制(指定import和import *的区别)

    java中有两种包的导入机制,总结如下: 单类型导入(single-type-import),              例如 import java.io.File; 按需类型导入(type-imp ...

  4. ubuntu下安装caffe时,在python中import caffe报错。

    @[TOC]ubuntu下安装caffe时,在python中import caffe报错. 编译完caffe无报错后,按照~/caffe/python/requirement.txt中的要求安装好所有 ...

  5. Python: PyCharm中导入matplotlib时报错:“Backend Qt5Agg is interactive backend”的解决方案...

    在使用PyCharm时,在PyCharm的Python Console中 import matplotlib.pyplot as plt时,会出现: Backend Qt5Agg is interac ...

  6. Python: PyCharm中导入matplotlib时报错:“Backend Qt5Agg is interactive backend”的解决方案

    Python: PyCharm中导入matplotlib时报错:"Backend Qt5Agg is interactive backend"的解决方案 在使用PyCharm时,在 ...

  7. 深入探讨Python的import机制:实现远程导入模块 | CSDN博文精选

    来源 | Python编程时光(ID:Python-Time) 所谓的模块导入,是指在一个模块中使用另一个模块的代码的操作,它有利于代码的复用. 也许你看到这个标题,会说我怎么会发这么基础的文章? 与 ...

  8. 一文搞懂 Python 的 import 机制

    一.前言 希望能够让读者一文搞懂 Python 的 import 机制 1.什么是 import 机制? 通常来讲,在一段 Python 代码中去执行引用另一个模块中的代码,就需要使用 Python ...

  9. python中集合变量_详解python的变量缓存机制

    变量的缓存机制 变量的缓存机制(以下内容仅对python3.6.x版本负责) 机制 只要有两个值相同,就只开辟一个空间 为什么要有这样的机制 在计算机的硬件当中,内存是最重要的配置之一,直接关系到程序 ...

最新文章

  1. Netty傻瓜教程(五):不能不谈Redis
  2. 2021个人北美秋招总结
  3. android:layout_gravity和android:gravity的区别
  4. matlab画一个局部放大的图中图
  5. poj 1160(Post Office)
  6. 地理知识归纳:影响降水的九大因素
  7. 前端学习(2637):this
  8. centos下载mysql_python数据分析之路——centos下载并配置mysql与navicat的使用
  9. (14)Node.js 核心模块—http
  10. Windows服务器系统的端口要求
  11. Linux中交叉编译器的安装
  12. C# 设置图片背景色透明
  13. 国产配色网站,简单好用,包含在线图片取色工具
  14. 基于opengl的2d机器人双人格斗游戏
  15. ios 制作方形头像
  16. 经典文献阅读之--lris(优于Scan Context的回环检测)
  17. oracle中的rownumber,oracle中row_number和rownum的区别和联系(翻译)
  18. Pr 入门教程之如何创建新序列?
  19. 二分类函数(机器学习)
  20. Applications for PacBio circular consensus sequencing

热门文章

  1. 内存和swap查看 内存是拿来用的 不是看的
  2. 2台电脑间快速复制大文件
  3. 固定导航在网页设计中应用的22个优秀案例
  4. C#中判断某软件是否已安装
  5. 不良言论屏蔽方案探讨——自说自话方案
  6. 开发短视频APP跟上时代的快车
  7. SharePoint 2010 各个常用级别对象的获取
  8. 9月21日云栖精选夜读 | 如何优雅地从四个方面加深对深度学习的理解
  9. Fragment专辑(三):Fragment的添加(add)和替换(replace)的不同
  10. Linux 查看进程和删除进程