Python之路【第十八篇】:模块知识
模块,使用一些代码实现某个功能的代码集合,单独的.py文件或者是.py文件的集合就成为模块
模块类型
有三种类型的模块:
- 内置模块:python自己提供的模块,如time模块,datatime模块等,这些模块存放在python安装路径下的Lib文件夹中
- 自定义模块:自己编写的模块
- 第三方模块:下载的别人已经写好的模块
第三方模块安装方法汇总
1、在IDE中安装
file---->settings---->Project Interpreter
进入上述页面后,在页面右边可以找到一个+号,点击+号,搜索需要的包,下载即可
2、pip 安装
python3中用pip3进行安装,所以需要先安装pip3,然而pip3依赖setuptools,所以需要先安装setuptools
python3中默认自带pip3,这就方便了好多,注意要把pip3的路径放到环境变量中,要不在cmd窗口找不到
pip install安装,如pip3 install requets
pip uninstall卸载
3、easy_inatall安装
windows下,上述方法不好用时,使用easy_install安装第三方库:
进入python安装目录下的Scripts文件夹,执行easy_install 模块名字
即:
cd /d d:/python_2.7.14.amd64/Scripts 这是自己的python安装路径 easy_install module_name
4、源码安装
下载源码,将源码解压
在cmd窗口下,进入源码含有setup.py的路径下
python setup.py install
5、Anaconda安装
打开anaconda prompt,使用conda install命令进行安装
将pycharm中的python环境改为anaconda下的python解释器即可。
导入模块
import sys,os同时引入两个模块,但是不建议这么做
import modulename
from modulename import function
from lib.account import login(lib文件夹中有account.py文件,account文件中有login函数),也可以import lib.account
在导入的时候可以通过as设置别名
路径
在pycharm中通过sys.path可以看到模块导入的路径,如果在前面的路径中发现了模块,后面的路径就不再搜寻了,所以在自定义模块时,不要与内置模块重名unction
import sys print(sys.path)
输出结果为:
['E:\\PythonProject\\Test1', 'E:\\PythonProject\\Test1', 'D:\\python-3.5.4.amd64\\python35.zip', 'D:\\python-3.5.4.amd64\\DLLs', 'D:\\python-3.5.4.amd64\\lib', 'D:\\python-3.5.4.amd64', 'D:\\python-3.5.4.amd64\\lib\\site-packages']
这个就是模块的搜索路径,如果里面没有自己想要的路径,可以通过如下语句添加:
sys.path.append()
对于python,导入一个模块之后,下次再导入是失效的,已经在内存里面了,这时python的一个优化机制
py文件的全局变量
对于一个.py文件,执行print(vars())
{'__spec__': None, '__name__': '__main__', '__package__': None, '__builtins__': <module 'builtins' (built-in)>, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001667E604C88>, '__doc__': None, '__cached__': None, '__file__': 'E:/PythonProject/Test1/模块/index.py'}
__name__:如果是主文件,__name__=='__main__',否则等于模块名,执行的是哪个文件,__name__==__main__,否则等于模块名,常用来做一个判断,做主函数
#!/usr/bin/env python # -*- coding:utf-8 -*- import re print(re.__name__) print(__name__)
输出结果为:
re
__main__
调用主函数前,必须加if __name__ == '__main__':
__loader__
__file__:py文件自己的路径
#!/usr/bin/env python # -*- coding:utf-8 -*- #进行目录拼接,并且把新目录添加到sys.path中 import os import sys # print(__file__)获取当前目录 # print(os.path.dirname(__file__))获取到上一级目录 temp = os.path.dirname(__file__) b = 'bin' new_path = os.path.join(temp,b) sys.path.append(new_path)
__cached__:缓存,pyc文件,当前文件也为None
__builtins__:内建函数
__doc__:py文件的注释
#!/usr/bin/env python # -*- coding:utf-8 -*- ''' 文件的注释 ''' print(__doc__)
输出结果为:文件的注释
__spec__
__package__:当前py文件在哪个文件夹下面,用点划分,当前文件为None
这里需要详细整理的是(这两个最常用):
1、主文件
if __name__ == '__main__'
2、__file__
利用os.path.dir
os.path.join
3、内置函数在__builtins__里