Python中各种导入方法介绍(import)

1.Python包的结构

包(package)是python模块文件(module)所在的目录,且该目录下必须存在__init__.py文件,然后存放若干的模块文件和子目录,假如子目录中也有 __init__.py ,那么这个子目录就是这个包的子包了。__init__.py的内容可以为空,一般用来进行包的某些初始化工作或者设置__all__值,__all__值在下面的内容中还会提到。
一个包里面可以有若干个模块。模块在Python中对应于一个.py文件。在创建了一个脚本文件后,定义了某些函数和变量。你在其他需要这些功能的文件中,导入这模块,就可使用这些函数和变量。一般用module_name.fun_name,和module_name.var_name进行使用。
常见的包结构如下:
package_a
├── __init__.py
├── module_1.py
├── module_2.py
├── subpackage_a
    ├── __init__.py
    └── s_module_1.py
└── subpackage_b


2.导入(import)

包的导入

import package #as alias  可命名别称,下同
import package.subpackage #as alias

模块的导入

import package.moudule #as alias
import package.subpackage.moudule #as alias

使用时必须用全路径名。

from package import *
from package.subpackage import *

全部导出包中定义过的模块。 如果包的__init__.py定义了一个名为__all__的列表变量,它包含的模块名字的列表将作为被导入的模块列表。如果没有定义__all__, 这条语句不会导入所有的package的子模块,它只保证包package被导入,然后导入定义在包中的所有名字。

from package.subpackage import module
from package.subpackage import module as alias

这样导入,在使用的时候可以直接使用模块名而不用加上包前缀。

另外,dir()可以查看模块定义了什么名字(包括变量名,模块名,函数名等)

函数或变量的导入

from module import item # as alias
from package.subPackage.module import item # as alias

这样可以直接从模块中导入名字到符号表,但模块名字不会被导入。

from module import *     

这样可以把模块中的所有名字全部导入,除了那些以下划线开头的名字符号。不建议使用,不清楚导入了什么符号,有可能覆盖自己定义的东西。

 

3.总结

1. 当使用from package import name时,name可以是package的子模块或子包,或是其他的定义在包中的名字(比如一个函数、类或变量)。首先检查name是否定义在包中,不过没找到,就认为name是一个模块并尝试加载它,失败时会抛出一个ImportError异常。

2. 当使用import name.subname.subsubname语法时,倒数第二个name(在此处为subname)必须是包,最后一个name(在此处为subsubname)可以是一个模块或包,但不可以是类、函数和变量。

 

 

你可能感兴趣的:(Python学习笔记)