什么是模块
什么是模块
一个.py文件 就是一个模块
我们使用import加载的模块分为4个通用类别
1、py文件
2、包好一组模块的包(带__init__.py文件的文件夹)
3、内置模块
4、已被编译成共享库或者dLL的C或者C++扩展
为什么要用模块?
- 最大的好处是大大提高了代码的可维护性。一个完善的系统代码起码有几万行代码,把它们放在一个py文件中,对于编写或者修改都不是很方便和管理,所以把表示不同功能的代码分别放在不同的py文件中。
- 其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。
- 使用模块还可以避免函数名和变量名冲突。每个模块有独立的命名空间,因此相同名字的函数和变量完全可以分别存在不同的模块中,所以,我们自己在编写模块时,不必考虑名字会与其他模块冲突
模块的分类
1、内置标准模块
2、第三方开源模块
3、自定义模块
如何使用模块
模块的调用
模块的导入应该在程序开始的地方
模块一旦被导入调用,就相当于执行了另外一个py文件里的代码
调用语法
import xx
from xx import xx
from xx import xx as xx
模块的导入路径
发现,自己写的模块只能在当前路径下的程序里才能导入,换一个目录再导入自己的模块就报错说找不到了, 这是为什么?
这与导入路径有关
import sys print(sys.path)
输出
[‘D:\\路飞学城-python中级\\PycharmProjects\\全栈开发中级\\M2\\复习和总结‘, ‘D:\\路飞学城-python中级\\PycharmProjects‘, ‘F:\\Python36\\python36.zip‘, ‘F:\\Python36\\DLLs‘, ‘F:\\Python36\\lib‘, ‘F:\\Python36‘, ‘F:\\Python36\\lib\\site-packages‘, ‘F:\\Program Files\\JetBrains\\PyCharm 2018.1.2\\helpers\\pycharm_matplotlib_backend‘]
python解释器会按照列表顺序去依次到每个目录下去匹配你要导入的模块名,只要在一个目录下匹配到了该模块名,就立刻导入,不再继续往后找。
第一个元素,即代表当前目录,所以你自己定义的模块在当前目录会被优先导入。
开源模块的安装和使用
开源模块是什么?
简单的说,就是世界上有很多程序员大佬,他们自己写了一个特定功能的python模块,然后集中上传到一个地方,供其他程序员免费下载和使用
https://pypi.python.org/pypi 是python的开源模块库,截止2017年9.30日 ,已经收录了118170个来自全世界python开发者贡献的模块,几乎涵盖了你想用python做的任何事情。 事实上每个python开发者,只要注册一个账号就可以往这个平台上传你自己的模块,这样全世界的开发者都可以容易的下载并使用你的模块。
开源模块的安装
1、使用pip直接安装
pip install ipython
2、使用国内源安装
默认pip是使用Python官方的源,但是由于国外官方源经常被墙,导致不可用,我们可以使用国内的python镜像源,从而解决Python安装不上库的烦恼。
网上有很多可用的源,例如: 豆瓣:http://pypi.douban.com/simple/ 清华:https://pypi.tuna.tsinghua.edu.cn/simple
1、临时使用,只有安装ipython时使用指定源 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ipython 2、永久修改,一劳永逸 Linux下,修改 ~/.pip/pip.conf (没有就创建一个), 修改 index-url至tuna,内容如下: [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple windows下,直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini,内容如下: [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple
包(package)
概念:一个文件夹管理多个模块文件,这个文件夹就叫做包,每个包文件有一个显著特征就是有一个__init__.py文件,如果没有这个文件,就不是包
跨模块导入
只要能够找到路径,就能导入模块
所以,只要把相关模块的父级目录添加到环境变量(sys.path)中,然后再从这个父级目录中导入就可以找到模块了
原文地址:https://www.cnblogs.com/yxiaodao/p/9095468.html