'''
1、定义:
(1)模块:
用来从逻辑上组织python代码(变量、函数、类,逻辑是实现一个功能)
本质是.py结尾的python文件
(2)包:
用来从逻辑上组织模块的
本质是一个目录(必须带有__init__.py文件)
2、导入:
import 文件名
import 文件名A,文件名B
form 文件名 import * #导入该文件中所有的内容(变量、方法等;相当于把该文件的所有代码复制当前文件中)
form 文件名 import 方法(只有名字) as 自定义一个方法名
form 文件名 import 方法1(只有名字) as 自定义一个方法名,方法2(只有名字) as 自定义一个方法名
3、import 的本质:
import 文件A-->把文件A的代码解释了一遍,赋值给文件A(相当于A = 'A.py')。调用B变量:A.B;调用C方法:A.C()
找到A文件:
会先在sys.path.py中找,若找不到会报错,这时需要添加一个环境变量到sys.path.py文件中
import sys,os
print( os.path.abspath(__file__) ) #abspath:获取路径。__file__:当前文件的文件名
print( os.path.dirname( os.path.abspath(__file__) ) ) #dirname:获取目录名(相当于返回上一层),加os.path.dirname()可以一直返回
BASE_DIR = os.path.dirname( os.path.dirname( os.path.abspath(__file__) ))
sys.path.append(BASE_DIR) #append:添加,但会加到最后
sys.path.insert(0,BASE_DIR) #insert:可以用它插入到第一条
添加成功
form 文件A import B变量,C方法-->把文件A的B变量,C方法在当前文件中执行了一遍,可直接调用。调用B变量:print(B);调用C方法:C()
import 包A-->解释包A下的__init__.py文件
---挎包调用---
文件目录结构:
项目名A
包B
test1.py
包C
包D
test2.py
test2.py文件中要调用test1.py文件的方法
先把项目名A设置成环境变量:
sys.path.append( os.path.dirname( os.path.dirname( os.path.dirname( os.path.abspath(__file__) ) ) ) )
在用from执行test1.py文件内容
from 包B import test1
可以随意调用test1文件中的任何内容了
name()
4、导入优化:
若在一个py文件中多次调用模块中的方法,可以用from...impor...方法,节省时间,不必每次调用都读取了
5、模块的分类
分为三类:分别是标准库(内置模块)、开源模块(第三方模块)、自定义模块
'''