python modules_python—模块-
之前我们解决问题的时候,遇到复杂的问题,可能会导入python 的工具箱,这就是python里面自带的内置模块,其实python工具箱有好几百个,可以通过help('moudles')查看,得到的是python自带的和再第三方工具箱下载的,但是比如另一个人编写的模块我拿过来也能用,但是help('moudles')就不会显示出来。补充:查看的时候不用管下划线的部分,
使用模块有什么好处?
最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。
可重用。
使用模块还可以避免函数名和变量名冲突。每个模块有独立的命名空间,因此相同名字的函数和变量完全可以分别存在不同的模块中,所以,我们自己在编写模块时,不必考虑名字会与其他模块冲突
模块分类
模块分为三种:
内置标准模块(又称标准库,安装好python的时候自带的一个模块)执行help('modules')查看所有python自带模块列表
第三方开源模块,可通过pip install 模块名 联网安装
自定义模块
不管上面那种模块,调用都用import
模块调用
import module
from module import xx
from module.xx.xx import xx as rename
from module.xx.xx import *
#不推荐使用,带*意思是全部
例子:
import random
from os import rmdir
#可以理解成,os是工具箱里的一个小工具箱,rmdir是os里的一个更小的工具箱,可以导入一个,也可以导入多个
#from os import rmdir, rename
from django.core import handles
#解释为,django是创建的一个目录,core是django下的子目录,handles是core下的子目录,而handles里的文件才是py文件
import multiprocessing #这个模块名较长,可以用as rename
import multiprocessing as mul #直接调用mul就行,和上面的效果是一样的
*注意:模块一旦被调用,即相当于执行了另外一个py文件里的代码
自定义模块
首先创建一个文件夹,并创建一个py文件,即模块
再交互器下导入模块
模块查找路径
并没有找到这个模块,这是因为路径的问题,python要找模块的时候,有一个范围,就是sys.path, 交互器上输入命令就会出现一个包括他范围的列表
其中,第一个 ' ' 是当前目录,回默认从当前目录找,如果有就不找了,如果没有就继续往后走,找完都没有就会报错,
第二个zip一行是python安装包的内容,第三个lib一行是python下放c语言库的东西,其实前几个我们几乎用不到,都是python自带的,因为python使用c写的,他们互相之间有一些调用关系。
而最后一行,site-packages是所有的标准库,包括第三方的和内置的都会放在这个文件
上面这些都是python默认的,自己也可以往进加东西,
也可以删除刚才加进去的,但是已经导入成功了,就不会重新导入,还是刚才的那个
要注意的是,加进去的只是再当前程序内的运行过程中有效,如果退出了,还是会没有
开源模块
https://pypi.python.org/pypi 是python的开源模块库,截止2017年9.30日 ,已经收录了118170个来自全世界python开发者贡献的模块,几乎涵盖了你想用python做的任何事情。 事实上每个python开发者,只要注册一个账号就可以往这个平台上传你自己的模块,这样全世界的开发者都可以容易的下载并使用你的模块。
那如何从这个平台上下载代码呢?
1.直接在上面这个页面上点download,下载后,解压并进入目录,执行以下命令完成安装
编译源码 python setup.py build
安装源码 python setup.py install
直接通过pip安装
pip3 install paramiko #paramiko 是模块名
pip命令会自动下载模块包并完成安装。
软件一般会被自动安装你python安装目录的这个子目录里
/your_python_install_path/3.6/lib/python3.6/site-packages
pip命令默认会连接在国外的python官方服务器下载,速度比较慢,你还可以使用国内的豆瓣源,数据会定期同步国外官网,速度快好多
sudo pip install -i http://pypi.douban.com/simple/ alex_sayhi --trusted-host pypi.douban.com #alex_sayhi是模块名
使用
下载后,直接导入使用就可以,跟自带的模块调用方法无差,演示一个连接linux执行命令的模块
#coding:utf-8
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.108', 22, 'alex', '123')
stdin, stdout, stderr = ssh.exec_command('df')
print(stdout.read())
ssh.close();
执行命令 - 通过用户名和密码连接服务器
包(Package)
当你的模块文件越来越多,就需要对模块文件进行划分,比如微信,假如有500个文件,就需要划分开,哪些是负责朋友圈的,哪些是支付功能的,再比如把负责跟数据库交互的都放一个文件夹,把与页面交互相关的放一个文件夹,
└── my_proj
├── crm #代码目录
│ ├── admin.py
│ ├── apps.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── manage.py
└── my_proj #配置文件目录
├── settings.py
├── urls.py
└── wsgi.py
像上面这样,一个文件夹管理多个模块文件,这个文件夹就被称为包
那不同包之间的模块互相导入呢?
crm/views.py内容
def sayhi():
print('hello world!')
通过manage.py调用
from crm import views
views.sayhi()
包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。__int__.py用于标识当前文件夹是一个包。
python modules_python—模块-相关推荐
- Python Re 模块超全解读!详细
内行必看!Python Re 模块超全解读! 2019.08.08 18:59:45字数 953阅读 121 re模块下的函数 compile(pattern):创建模式对象 > import ...
- python argparse模块_Python argparse模块应用实例解析
这篇文章主要介绍了Python argparse模块应用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 简介 argparse是python ...
- 关于使用python logging模块的几点总结
关于使用python logging模块的几点总结 使用python的标准日志模块logging可以非常方便地记录日志.Python日志系统非常丰富.添加结构化或非结构化日志输出到python代码,写 ...
- python高级-模块(14)
一.python中的模块 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt函数,必须用语句#include <math.h>引入math.h这个头文件,否则是无法正常进行调用的. ...
- 转载: Python os 模块的功能以及子函数介绍
原文链接: python之os模块 - 程序生(Codey) - 博客园 https://www.cnblogs.com/cxscode/p/8085326.html 一.Python OS模块介绍 ...
- 简单介绍python process模块
在python中大部分情况需要使用多进程,python提供了multiprocessing模块.multiprocessing模块的功能众多:支持子进程.通信和共享数据.执行不同形式的同步,提供了Pr ...
- python io模块_python中的StringIO模块
原博文 2015-10-23 15:21 − # python中的StringIO模块 标签:python StringIO --- > 此模块主要用于在内存缓冲区中读写数据.模块是用类编写的, ...
- python正则表达式需要模块_使用Python正则表达式模块,让操作更加简单
处理文本数据的一个主要任务就是创建许多以文本为基础的特性. 人们可能想要在文本中找出特定格式的内容,比如找出存在于文本中的电子邮件,或者大型文本中的电话号码. 虽然想要实现上述功能听起来很繁琐,但是如 ...
- python导入模块有同名_Python:导入与函数同名的模块
背景:第一次在SE上提问.我在 Python方面还很陌生,而且在编程方面也不是很有经验.我已经四处寻找,但我没有找到这个问题的答案,我非常感谢你的帮助. 我的问题是:如何导入与函数同名的模块? 具体来 ...
- python第三方模块—psutil模块
系统基础信息采集模块作为监控模块的重要组成部分,能够帮助运维人员了解当前系统的健康程度,同时也是衡量业务的服务质量的依据,比如系统资源吃紧,会直接影响业务的服务质量及用户体验,另外获取设备的流量信息, ...
最新文章
- Activity启动流程图
- 深入java_深入Java Final
- 互联网1分钟 | 0214 2018 年超1/3的婚姻由约会交友类App促成;刘强东新开设 “南京京东云计算有限公司”...
- idea中git分支的使用
- 关于反射Assembly.Load(程序集).CreateInstance(命名空间.类)
- SkyEye——汽车电子系统仿真测试工具
- FCLK、HCLK、PCLK
- [android]netd与NetworkManagementService初印象
- 基于Easy CHM和VS的帮助文档制作
- 网络协议之NAT穿透原理
- Java算法中O(1),O(logn),O(n),O(nlogn),O(n2)是什么
- CSDN博客第一期云计算最佳博主评选
- maven PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable
- JVM学习 -- JVM 性能调优监控工具 jps、jstack、jmap、jhat、jstat、hprof 使用详解
- 2021年全国大学生电子设计大赛(一)赛题解析与预测
- JavaWeb是什么?如何学习JavaWeb的体系
- 攻防世界逆向高手题之re2-cpp-is-awesome
- 程序员能力提升——7-2-1法则,让知识转化为职业竞争力
- 《AutoCAD 2014中文版实用教程》导读
- Oracle如何彻底删除
热门文章
- 算法面试题(数据结构)
- android layout_width 代码,关于LinearLayout设置权重后width或height不设置0dp的影响说明...
- magento 客户表相关_第9章 相关性分析
- VisualVM安装,插件安装,各个面板信息讲解
- mysql redis binlog_基于binlog的canal到redis的同步
- 分段路由_如何理解段路由(SPRING)?—Vecloud微云
- linux 系统tty、pty和pts 的概念及区别
- Golang gRPC实践 连载五 拦截器 Interceptor
- 云智慧悄然“变身”业务运维,到底发生了什么?
- NDK开发基础④增量更新之客户端合并差分包