python模块
一、模块(Module)定义
为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)。
1、模块好处:
- 最大的好处是大大提升了代码的可维护性。
- 编写代码不必从零开始,当一个模块编写完毕,就可以被其他地方引用(可重用)
- 使用模块可以避免函数名和变量名冲突
- 每个模块有独立的命名空间,相同名字函数、变量可分别存在不同模块
- 编写模块时,不必考虑名字与其他模块冲突
2、模块分类:
- 内置标准模块(标准库)执行help('modules')查看所有Python自带模块列表
- 第三方开源模块,可通过pip install模块名 联网安装
- 自定义模块
二、模块调用
1、模块导入方法
第一种:import module 把整个模块都导入
import os
第二种:from module import xx 是从什么导入什么
from os import rmdir,rename # 可以一次导入多个子模块
第三种:from module xx.xx import xx as rename
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文件里的代码。
三、模块查找路径
一般情况下,自己写的模块只能在当前路径下的程序里才能导入,换一个目录再导入自己的模块就报错说找不到了, 这是为什么?
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解释器会按照列表顺序去依次到每个目录下去匹配要导入的模块名,只要在一个目录下匹配到了该模块名,就立刻导入,不再继续往后找。
注意:注意列表第一个元素为空,即代表当前目录,所以你自己定义的模块在当前目录会被优先导入。
四、开源模块
https://pypi.python.org/pypi 是python的开源模块库, 事实上每个python开发者,只要注册一个账号就可以往这个平台上传你自己的模块,这样全世界的开发者都可以容易的下载并使用你的模块。
1、配置国内源
在没有配置第三方库的时候,使用pip或者conda安装包的时候,会直接指向Python官网,由于服务器在国外,下载速度会很慢,甚至无法访问pypi官网,需要修改pip配置。
此方式不同的操作系统,配置文件存放的路径也不尽相同。这里仅列举linux、macOS、windows。使用此种方式,每次去安装第三方库的时候,不需要在后方加-i命令,pip会自动去配置号的镜像源查找对应的包。
(1)Linux和macOS系统
配置文件路径为:~/.pip/pip.conf,如果不存在此文件可以在root账户下,使用vi命令手动创建。
vi ~/.pip/pip.conf
在此文件中添加以下代码:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
(2)windows
使用按键win+e打开文件管理器,在上方路径栏输入:
%APPDATA%
查看此目录下是否有pip目录,如果没有则需要创建,并在pip目录下以文本方式添加pip.ini文件。写入内容为
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
也可以更改index-url的内容为其他pip源。保存退出即可。
(3)不修改源直接安装
适用于windows、linux、macOS等多种操作系统,方式一样
直接在安装包的命令后面加 -i pip源网址,如:
pip install torch==1.8.1 -i https://mirrors.aliyun.com/pypi/simple/
2、以安装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();