blog/docs/code/python/import.md

80 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 模块、包
date: 2020-10-01 14:20:10
tags: [Python]
categories: [Python]
author: Anges黎梦
---
## 模块
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
模块让你能够有逻辑地组织你的 Python 代码段。
把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
模块能定义函数,类和变量,模块里也能包含可执行的代码。
在Python中.py的文件就可以称之为一个模块。
### import
模块定义好后,我们可以使用 import 语句来引入模块,语法如下:
`import module1[, module2[,... moduleN]]
`
比如要引用模块 math就可以在文件最开始的地方用 import math 来引入。在调用 math 模块中的函数时,必须这样引用:
`模块名.函数名`
一个模块只会被导入一次不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。
### from … import
Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中。语法如下:
`from modname import name1[, name2[, ... nameN]]`
**示例:**
```
from base.ke017 import res
# from为当前项目层级一级一级往下查找的路径
print(res(3,6))
# from .ke001 import * # .是查找与当前文件同级别的文件,*是导入所有可以导入的内容
```
### from … import *
把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:
`from modname import *`
### 搜索路径
当你导入一个模块Python 解析器对模块位置的搜索顺序是:
- 当前目录
- 如果不在当前目录Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
- 如果都找不到Python会察看默认路径。UNIX下默认路径一般为/usr/local/lib/python/。
模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录PYTHONPATH和由安装过程决定的默认目录。
### sys库
```
import sys
print(sys.path)
sys.path.append("")
```
## 包
包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。
简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。__init__.py 用于标识当前文件夹是一个包。
考虑一个在 package_runoob 目录下的 runoob1.py、runoob2.py、__init__.py 文件test.py 为测试调用包的代码