cms网站,网站地图灰色效果的怎么做的,山东建设机械协会网站,我的长沙app在本文中#xff0c;我们将看到Python中的绝对和相对导入。
Python中导入的工作
Python中的import类似于C/C中的#include header_file。Python模块可以通过使用import导入文件/函数来访问其他模块的代码。import语句是调用import机制的最常见方式#xff0c;但它不是唯一的…在本文中我们将看到Python中的绝对和相对导入。
Python中导入的工作
Python中的import类似于C/C中的#include header_file。Python模块可以通过使用import导入文件/函数来访问其他模块的代码。import语句是调用import机制的最常见方式但它不是唯一的方式。
import语句涉及两个操作它搜索模块并将搜索结果绑定到本地作用域中的名称。当导入模块时Python会运行模块文件中的所有代码并使其可用于导入器文件。当一个模块被导入时解释器首先在sys.modules中搜索它sys. modules是所有先前导入的模块。如果没有找到它那么它将搜索所有具有该名称的内置模块如果找到它那么解释器将运行所有代码并使其对文件可用。如果找不到模块它将在变量sys. path给出的目录列表中搜索同名文件。path是一个变量包含一个路径列表其中包含python库、包和包含输入脚本的目录。
例如导入一个名为math的模块然后解释器在内置模块中搜索它如果没有找到则在sys. path给出的目录列表中搜索名为math.py的文件。
import math
print(math.pi)import语句的语法
用户可以导入包和模块。注意导入一个包实际上是将包的__init__.py文件作为一个模块导入。用户还可以从包或模块导入特定对象。通常有两种类型的导入语法。当您使用第一个时您直接导入资源。
import gxggxg可以是封装或模块。当用户使用第二种语法时则用户从另一个包或模块导入资源。
from gxg import geekgeek可以是模块、子包或对象例如类或函数。
导入语句的样式
PEP 8是python的官方风格指南它有一套规则来指导如何制定python代码以最大限度地提高其可读性。对于编写import语句有以下几点
导入应该总是写在文件的顶部就在任何模块注释和文档字符串之后。导入通常应该用空格分隔。导入应按以下顺序分组。 标准库导入Python的内置模块 相关第三方库 本地应用程序/库特定导入
import math
import os# Third party imports
from flask import Flask
from flask_restful import Api
from flask_sqlalchemy import SQLAlchemy# Local application imports
from local_module import local_class
from local_package import local_functionPython中的绝对导入vs相对导入
绝对导入涉及完整路径即从项目的根文件夹复制到所需的模块。绝对导入状态即资源将使用其完整路径从项目的根文件夹导入。
语法和实例 让我们看看下面的目录结构 这里有一个名为project的目录下面有两个子目录即pkg1、pkg2。pkg1有两个模块module1和module2。pkg2包含三个模块module3、module4、init.py以及一个子包名subpkg1其中包含module5.py。让我们假设以下情况
pkg 1/module1.py包含一个函数fun 1pkg 2/module3.py包含一个函数fun 2pkg 2/subpkg 1/module5.py包含一个函数fun 3
# importing a fun1 from pkg1/module1
from pkg1.import module1 import fun1from pkg1 import module2# importing a fun2 from pkg2/module3
from pkg2 import module3 import fun2# importing a fun3 from pkg2/subpkg1/module5
from pkg2.subpkg1.module5 import fun3绝对导入的优点和缺点
优点
绝对导入非常有用因为它们是明确和直接的。绝对导入很容易从导入的资源的位置准确地判断出来只需查看语句即可。即使import语句的当前位置发生更改绝对导入仍保持有效。
缺点
如果目录结构非常大则使用绝对导入没有意义。在这种情况下使用相对导入效果很好。
from pkg1.subpkg2.subpkg3.subpkg4.module5 import fun6Python中的相对导入
相对导入指定从其当前位置导入的对象或模块该位置是import语句驻留的位置。有两种类型的相对导入
隐式相对导入-Python3.x中不允许隐式相对导入。显式相对导入-显式相对导入已经在Python3.x中获得批准。
语法和实例 相对导入的语法取决于当前位置以及要导入的模块或对象的位置。相对导入使用点.符号来指定位置。一个点表示模块在当前目录中两个点表示模块在当前位置的父目录中三个点表示模块在祖目录中依此类推。让我们看看下面的目录结构 让我们假设以下情况
pkg 1/module1.py包含一个函数fun 1pkg 2/module3.py包含一个函数fun 2pkg 2/subpkg 1/module5.py包含一个函数fun 3
# importing fun1 into pkg1/module1.py
from .module1 import fun1# importing fun2 and fun3 into pkg2/module3.py
from .module3 import fun2
from .subpackage1.module5 import fun3相对导入的优点和缺点
优点
使用相对导入简洁明了。基于当前位置它降低了import语句的复杂性。
缺点
相对导入不像绝对导入那样易读。使用相对导入并不容易因为很难告诉模块的位置。