一个.py文件 就是一个模块python
咱们使用import加载的模块分为4个通用类别程序员
一、py文件windows
二、包好一组模块的包(带__init__.py文件的文件夹)函数
三、内置模块url
四、已被编译成共享库或者dLL的C或者C++扩展spa
- 最大的好处是大大提升了代码的可维护性。一个完善的系统代码起码有几万行代码,把它们放在一个py文件中,对于编写或者修改都不是很方便和管理,因此把表示不一样功能的代码分别放在不一样的py文件中。
- 其次,编写代码没必要从零开始。当一个模块编写完毕,就能够被其余地方引用。咱们在编写程序的时候,也常常引用其余模块,包括Python内置的模块和来自第三方的模块。
- 使用模块还能够避免函数名和变量名冲突。每一个模块有独立的命名空间,所以相同名字的函数和变量彻底能够分别存在不一样的模块中,因此,咱们本身在编写模块时,没必要考虑名字会与其余模块冲突
一、内置标准模块code
二、第三方开源模块blog
三、自定义模块ip
模块的导入应该在程序开始的地方开发
模块一旦被导入调用,就至关于执行了另一个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开发者,只要注册一个帐号就能够往这个平台上传你本身的模块,这样全世界的开发者均可以容易的下载并使用你的模块。
一、使用pip直接安装
pip install ipython
二、使用国内源安装
默认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
概念:一个文件夹管理多个模块文件,这个文件夹就叫作包,每一个包文件有一个显著特征就是有一个__init__.py文件,若是没有这个文件,就不是包
只要可以找到路径,就能导入模块
因此,只要把相关模块的父级目录添加到环境变量(sys.path)中,而后再从这个父级目录中导入就能够找到模块了