什么是模块:.py文件就是模块
什么是包:包含了__init__.py的模块的文件夹(目录)
模块和包的作用:就是为了组织代码
注意:directory 不是包,里面没有__init__.py模块
一、模块的导入
使用其他模块里面的函数、变量、类,模块导入
作用:使用/调用写好的代码
模块导入的方式:
from 路径.路径.模块名 import 类名(函数名)
import 路径.路径.模块名 路径从项目根目录开始
import 包名
import ddt import json import unittest from FutureLoan.common.requests_handler import visit from FutureLoan.middleware.MiddleHandler import MidInitHandler
二、模块分类
内置模块:Python自带的模块,import os
第三库模块:别人写好的模块,需要安装。pip install requests,import。。。。from····import······
自定义模块:自己写的模块,通常放在一个包里面。from 包 import 模块
扩展内容:
from ... import * ------>表示从模块中导入所有的代码
from FutureLoan.common.requests_handler import * # 一般不要使用,可能会出现和这个模块里的函数重名
from .....import sth as other 表示as 重命名,别名
from FutureLoan.common.requests_handler import visit as visit_new
打印导入模块路径
import sys print(sys.path) ''' ['D:\Program Files (x86)\PyCharm\workspace\Lemon', 'D:\Program Files (x86)\PyCharm\workspace', 'D:\Program Files (x86)\PyCharm\workspace\SmartCampus_web', 'D:\Program Files (x86)\Python38\python38.zip', 'D:\Program Files (x86)\Python38\DLLs', 'D:\Program Files (x86)\Python38\lib', 'D:\Program Files (x86)\Python38', 'D:\Program Files (x86)\Python38\lib\site-packages', 'D:\Program Files (x86)\Python38\lib\site-packages\win32', 'D:\Program Files (x86)\Python38\lib\site-packages\win32\lib', 'D:\Program Files (x86)\Python38\lib\site-packages\Pythonwin'] '''
三、__name__
表示当前文件的模块名
运行文件、脚本 1.是模块,是特殊的模块 2.我们是通过这个文件运行程序的
通过模块导入形式运行的,__name__就是文件名、模块名称
直接运行的文件,脚本,__name__就不是文件名、模块名,是固定的:__main__
demo.py if __name__=='__mian__': print('demo') demo1.py if __name__=='__mian__': print('demo1') demo2.py if __name__=='__mian__': print('demo2') demo3.py from LianXi.test1 import demo from LianXi.test1 import demo1 from LianXi.test1 import demo2 if __name__=='__mian__': print('demo3') #运行后的结果为:demo3
demo.py if __name__=='__mian__': print('demo') demo1.py if __name__=='__mian__': print('demo1') demo2.py if __name__=='__mian__': print('demo2') demo3.py from LianXi.test1 import demo from LianXi.test1 import demo1 from LianXi.test1 import demo2 print('demo3') #运行后的结果为:demo demo1 demo2 demo3
问题1:import 模块.函数 这样写可以吗?
如:import LianXi.test1.demo.visit
这样写是不可以的
导入模块,查找模块的顺序:项目目录–》Python安装目录(lib)----》pip install 第三方模块(site-package)
导入内置和第三方模块,直接import sth 即可,不需要写路径
导入自定义模块,通常是从根目录的下面开始找的,需要写明路径
为了不写路径,可以把自定义模块放到Python安装目录的lib下或者是第三方模块的site-package下,这样可以直接导入模块了
四、os模块
import os 主要处理系统相关操作
主要使用os.path,处理系统路径相关操作
import os.path 或者 from os import path
# 获取文件绝对路径(用的最多,因为绝对路径不会变) print(os.path.abspath(__file__)) print(__file__) print(__name__) ''' D:Program Files (x86)PyCharmworkspaceLemon 714.py D:/Program Files (x86)/PyCharm/workspace/Lemon/0714.py __main__ '''
绝对路径:从系统的盘符或者是系统根目录开始
相对路径:一个路径相对于另一个路径的说法
__file__:当前文件的路径,可能是绝对路径,也可能是相对路径
__name__:模块名,没有路径
import os # 获取文件绝对路径 file_path = os.path.abspath(__file__) print("file_path:",file_path) # 获取上一级路径 dir_name = os.path.dirname(file_path) # 路径拼接 print(os.path.join(dir_name,'demo.txt')) ''' file_path: D:Program Files (x86)PyCharmworkspaceLemon 714.py D:Program Files (x86)PyCharmworkspaceLemondemo.txt '''
注意:所有获取到的路径,只是一个路径的表示,并不代表这个文件或者路径真的存在
# 获取当前工作目录 print(os.getcwd()) # 创建一个新的目录(文件夹) print(os.mkdir('class_2')) # 判断一个路径存不存在 print(os.path.exists(os.getcwd())) # 判断当前路径是否是一个文件 print(os.path.isfile(os.getcwd())) # 判断当前路径是否是一个目录 print(os.path.isdir(os.getcwd()))
'''
D:Program Files (x86)PyCharmworkspaceLemon
None
True
False
True
'''