Python包的导入说明

import 模块
from 包 import 模块

上面的代码有什么区别呢?

from 模块 import * 这种导入想象与把模块里面的代码都复制到当前模块中(也就是该语句所在位置),这时候你可以直接使用这个模块里面的变量名称和方法等。
所以这种方式如果变量和方法和当前模块有重名则会不生效。

import 模块 这种导入如果你使用里面的变量或方法,必须加上模块名称前缀。import 的本质是把模块提前解释一遍然后赋值给一个与模块同名
的变量,所以这也就是为什么你使用里面的模块或变量要加模块名的原因。

【包】之所以能导入就是因为它里面有一个__init__.py文件,所以导入包的过程就是解释这个文件的过程。不过在执行这个文件之前它首先要进行搜索也就是
找到这个包在哪里?就去sys.path这个里面定义的搜索路径查找。这里首先包含当前路面、项目的sources roots目录和其他系统内置的路径。所以sys.path
就是这个列表,如果有时候找不到你导入的包,你就可以把包路径添加到这个sys.path列表中。sys.path列表中的第一个元素始终是当前路径。

虽然导入包和导入模块都是 import 语句但是其背后的逻辑不通,导入包是执行包下面的__init__.py,但是导入模块是把模块的内容复制给同名模块名称也就
变成了一个变量。

看下面的例子

原文地址:https://www.cnblogs.com/yunxizhujing/p/9537222.html

时间: 2024-08-30 06:17:53

Python包的导入说明的相关文章

Python 之 包的导入

Python包的导入 有时候,我们需要把包里面的所有模块全部一次导入,就可以直接导入包,然后不需要使用上一篇文章的方法进行一个一个模块导入. 将core模块下的login与test模块一次性导入 1.编写main.py 程序导入包 import os import sys # print(sys.path) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #父目录 # print(BASE_DIR) /

Python包的相对导入时出现“ ‘Parent module ' not loaded, cannot perform relative import”的解决方法

在练习Python中package的相对导入时,即 from . import XXX 或者 from .. import XXX 时会遇到这样两个错误: SystemError: Parent module '' not loaded, cannot perform relative import 和 ValueError: attempted relative import beyond top-level package 其实这两个错误的原因归根结底是一样的:在涉及到相对导入时,packa

python中的模块,以及包的导入的总结

模块导入的方式: 模块的概念:一个.py文件就称为一个模块 导入模块中函数的方式: 方式一:import  模块名 使用时:模块名.函数名() 方式二 :from 模块名 import  函数名 使用时:函数名() 方式三: from 模块名 import * 使用时:函数名() 方式四:from 模块名 import 函数名 as  tt(自定义)     注意原来的函数名将失效 使用时:tt() 可以在模块当中定义一个变量__all__: 使用__all__的影响:  后面的[]里面写什么函

python模块与包的导入

1. 模块与包的区别 模块,即module,一个包含python语句的.py文件就是一个模块!每个源代码文件都会自动成为模块!没有额外的语法用来声明模块. 包,又称模块包,即module package,是一个目录,该目录中包含.py文件,其中必须有一个__init__.py文件,该文件用于声明和初始化模块包.第一次在进程中导入某个目录(包)时,python会自动运行__init__.py文件中的代码.该目录会在内存中创建一个模块对象,__init__.py中赋值的变量则会变成该模块对象的属性.

Python 包的相对导入讲解

[Python 包的相对导入讲解] 参考:http://www.dai3.com/python-import.html

【Python之模块及包的导入】

一.模块导入 1.定义 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python 代码段. 把相关的代码分配到一个模块里能让你的代码更好用,更易懂. 模块能定义函数,类和变量,模块里也能包含可执行的代码. 包括:内置模块,自定义模块,第三方模块: 2.作用 最大的好处是大大提高了代码的可维护性.其次,编写代码不必从零开始.当一个模块编写完毕,就可以被其他地方引用.我们在编写程序

【Python 生成器 匿名函数 递归 模块及包的导入 正则re】

一.生成器 1.定义 生成器(generator)是一个特殊的迭代器,它的实现更简单优雅,yield是生成器实现__next__()方法的关键.它作为生成器执行的暂停恢复点,可以对yield表达式进行赋值,也可以将yield表达式的值返回. 也就是说,yield是一个语法糖,内部实现支持了迭代器协议,同时yield内部是一个状态机,维护着挂起和继续的状态. yield的功能: 1.相当于为函数封装好__iter__和__next__ 2.return只能返回一次值,函数就终止了,而yield能返

Python包和模块的导入问题

模块--代码封装 模块是Python组织代码的基本方式.Python的脚本都是用扩展名为py的文本文件保存,一个脚本可以单独运行,也可以导入另一个脚本中运行,当脚本被导入运行时,我们将其称为模块(module).就是说,我们在python里写的所有代码文件都可以叫模块. 导入的时候,模块名与脚本的文件名相同,例如我们编写了一个名为items.py 的脚本,则在另外一个脚本中用import item语句来导入它. windows环境下在python中查看安装有哪些模块 >>> import

python基础第12天-包的导入&异常处理

包的导入 几种导入方式 import 包名 1 import time 2 time.time() import 包名,包名 1 import time,sys 2 time.time() 3 sys.path from 包名 import 模块名 1 from time import time 2 time() from 包名 import * 导入指定包下所有模块 1 from time import * 2 time()  __all__暴露指定属性 test.py: 1 __all__