1、模块(Module)定义 |
为了编写可维护的代码,咱们把不少函数分组,分别放到不一样的文件里,这样,每一个文件包含的代码就相对较少,不少编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)。python
一、最大的好处是大大提高了代码的可维护性。
二、编写代码没必要从零开始,当一个模块编写完毕,就能够被其余地方引用(可重用)
三、使用模块能够避免函数名和变量名冲突
每一个模块有独立的命名空间,相同名字函数、变量可分别存在不一样模块
编写模块时,没必要考虑名字与其余模块冲突linux
一、内置标准模块(标准库)执行help('modules')查看全部Python自带模块列表
二、第三方开源模块,可经过pip install模块名 联网安装
三、自定义模块django
2、模块调用 |
第一种:import module 把整个模块都导入
编程
import os
第二种:from module import xx 是从什么导入什么
app
from os import rmdir,rename # 能够一次导入多个子模块
第三种:from module xx.xx import xx as rename
ssh
from django.core import handler # 一层层进入 import multiprocessing as mul # 对于名称很长的模块能够用as起一个别名 import socket socket.AF_INET # 想省去socket的填写 from socket import AF_INET AF_INET
第四种:from socket import * , 不要这么写,各类模块以前可能变量发生冲突
注意:模块一旦被调用,即至关于执行了另一个py文件里的代码。socket
3、模块查找路径 |
通常状况下,本身写的模块只能在当前路径下的程序里才能导入,换一个目录再导入本身的模块就报错说找不到了, 这是为何?编程语言
import sys >>> sys.path # 导入模块时,查找的目录,从左到右 ''' ['', # 第一个元素为空,表明当前目录,本身定义的模块在当前目录会优先导入 '/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip', # Python自带安装包 '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6', # c语言相关库 '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload', # '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages', # 全部第三方和内置的库 ] sys.path.append('第四章-模块') # 添加新的查找目录 del sys.path[-1] # 删除查找目录
Python解释器会按照列表顺序去依次到每一个目录下去匹配要导入的模块名,只要在一个目录下匹配到了该模块名,就马上导入,再也不继续日后找。函数
注意:注意列表第一个元素为空,即表明当前目录,因此你本身定义的模块在当前目录会被优先导入。spa
4、开源模块 |
https://pypi.python.org/pypi 是python的开源模块库, 事实上每一个python开发者,只要注册一个帐号就能够往这个平台上传你本身的模块,这样全世界的开发者均可以容易的下载并使用你的模块。
以安装paramiko模块实现链接linux执行命令的为例:
# pip 安装 # 软件安装目录通常在/your_python_install_path/3.6/python3.6/site-packages pip3 install paramiko # 设置使用国内豆瓣源 sudo pip install -i http://pypi.douban.com/simple/ alex_sayhi --trusted-host pypi.douban.com
链接命令行并执行命令:
import paramiko ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('192.168.1.100', 22, 'hqs', '123') stdin, stdout, stderr = ssh.exec_command('df -h') print(stdout.read()) ssh.close();