Python基础-模块
模块,用一堆代码实现了某个功能的代码集合。
类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。
如:os 是系统相关的模块;file是文件操作相关的模块
模块分为三种:
- 自定义模块
- 第三方模块
- 内置模块
1、自定义模块
情景一:
情景二:
情景三:
2、导入模块
Python之所以应用越来越广泛,在一定程度上也依赖于其为程序员提供了大量的模块以供使用,如果想要使用模块,则需要导入。导入模块有一下几种方法:
1 import module 2 from module.xx.xx import xx 3 from module.xx.xx import xx as rename 4 from module.xx.xx import *
导入模块其实就是告诉Python解释器去解释那个py文件
- 导入一个py文件,解释器解释该py文件
- 导入一个包,解释器解释该包下的 __init__.py 文件 【py2.7】
那么问题来了,导入模块时是根据那个路径作为基准来进行的呢?即:sys.path
1 import sys 2 print sys.path
执行结果:
['/Users/wupeiqi/PycharmProjects/calculator/p1/pp1', '/usr/local/lib/python2.7/site-packages/setuptools-15.2-py2.7.egg', '/usr/local/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg', '/usr/local/lib/python2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.10-x86_64.egg', '/usr/local/lib/python2.7/site-packages/xlutils-1.7.1-py2.7.egg', '/usr/local/lib/python2.7/site-packages/xlwt-1.0.0-py2.7.egg', '/usr/local/lib/python2.7/site-packages/xlrd-0.9.3-py2.7.egg', '/usr/local/lib/python2.7/site-packages/tornado-4.1-py2.7-macosx-10.10-x86_64.egg', '/usr/local/lib/python2.7/site-packages/backports.ssl_match_hostname-3.4.0.2-py2.7.egg', '/usr/local/lib/python2.7/site-packages/certifi-2015.4.28-py2.7.egg', '/usr/local/lib/python2.7/site-packages/pyOpenSSL-0.15.1-py2.7.egg', '/usr/local/lib/python2.7/site-packages/six-1.9.0-py2.7.egg', '/usr/local/lib/python2.7/site-packages/cryptography-0.9.1-py2.7-macosx-10.10-x86_64.egg', '/usr/local/lib/python2.7/site-packages/cffi-1.1.1-py2.7-macosx-10.10-x86_64.egg', '/usr/local/lib/python2.7/site-packages/ipaddress-1.0.7-py2.7.egg', '/usr/local/lib/python2.7/site-packages/enum34-1.0.4-py2.7.egg', '/usr/local/lib/python2.7/site-packages/pyasn1-0.1.7-py2.7.egg', '/usr/local/lib/python2.7/site-packages/idna-2.0-py2.7.egg', '/usr/local/lib/python2.7/site-packages/pycparser-2.13-py2.7.egg', '/usr/local/lib/python2.7/site-packages/Django-1.7.8-py2.7.egg', '/usr/local/lib/python2.7/site-packages/paramiko-1.10.1-py2.7.egg', '/usr/local/lib/python2.7/site-packages/gevent-1.0.2-py2.7-macosx-10.10-x86_64.egg', '/usr/local/lib/python2.7/site-packages/greenlet-0.4.7-py2.7-macosx-10.10-x86_64.egg', '/Users/wupeiqi/PycharmProjects/calculator', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/site-packages', '/Library/Python/2.7/site-packages']
如果sys.path路径列表没有你想要的路径,可以通过 sys.path.append('路径') 添加。
1 import sys 2 import os 3 project_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 4 sys.path.append(project_path)
总结:内置模块是Python自带的功能,在使用内置模块相应的功能时,需要【先导入】再【使用】
一、sys
用于提供对Python解释器相关的操作:
1 sys.argv 命令行参数List,第一个元素是程序本身路径 2 sys.exit(n) 退出程序,正常退出时exit(0) 3 sys.version 获取Python解释程序的版本信息 4 sys.maxint 最大的Int值 5 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 6 sys.platform 返回操作系统平台名称 7 sys.stdin 输入相关 8 sys.stdout 输出相关 9 sys.stderror 错误相关
1 import sys 2 import time 3 4 5 def view_bar(num, total): 6 rate = float(num) / float(total) 7 rate_num = int(rate * 100) 8 r = '\r%d%%' % (rate_num, ) 9 sys.stdout.write(r) 10 sys.stdout.flush() 11 12 13 if __name__ == '__main__': 14 for i in range(0, 100): 15 time.sleep(0.1) 16 view_bar(i, 100) 17 18 进度百分比
sys模块示例1
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 #Author: huzhihua 4 5 import sys 6 7 print(sys.path)
注意:
python2 执行上面代码会报错。(原因:不能和导入的库名相同)
python3 执行不会报错。
执行结果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\python.exe D:/python/day2/sys.py ['D:\\python\\day2', 'D:\\python', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python35-32\\python35.zip', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python35-32\\DLLs', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python35-32\\lib', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python35-32', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python35-32\\lib\\site-packages']
python标准库路径
C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\Lib
python第三方库路径
C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\Lib\site-packages
sys模块示例2
说明:打印相对路径
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 #Author: nulige 4 import sys 5 #print(sys.path) #打印环境变量 6 print(sys.argv)
执行结果:
1 ['D:/python/day2/sys.py']
说明:演示取出2 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 #Author: nulige 4 5 import sys 6 #print(sys.path) #打印环境变量 7 print(sys.argv) 8 print(sys.argv[2])
二、os
用于提供系统级别的操作:
1 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 2 os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd 3 os.curdir 返回当前目录: ('.') 4 os.pardir 获取当前目录的父目录字符串名:('..') 5 os.makedirs('dir1/dir2') 可生成多层递归目录 6 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 7 os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname 8 os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname 9 os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 10 os.remove() 删除一个文件 11 os.rename("oldname","new") 重命名文件/目录 12 os.stat('path/filename') 获取文件/目录信息 13 os.sep 操作系统特定的路径分隔符,win下为"\\",Linux下为"/" 14 os.linesep 当前平台使用的行终止符,win下为"\t\n",Linux下为"\n" 15 os.pathsep 用于分割文件路径的字符串 16 os.name 字符串指示当前使用平台。win->'nt'; Linux->'posix' 17 os.system("bash command") 运行shell命令,直接显示 18 os.environ 获取系统环境变量 19 os.path.abspath(path) 返回path规范化的绝对路径 20 os.path.split(path) 将path分割成目录和文件名二元组返回 21 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 22 os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素 23 os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False 24 os.path.isabs(path) 如果path是绝对路径,返回True 25 os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False 26 os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False 27 os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 28 os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间 29 os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
示例1
备注:os.mkdir("new_dir"),表示:创建一个目录
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 #Author: nulige 4 5 import os 6 7 #cmd_res = os.system("dir") #执行命令,不保存结果 8 cmd_res = os.popen("dir").read() #保存在内存的一个地方,通过read方法读取出来 9 print("-->",cmd_res) 10 os.mkdir("new_dir")
执行结果:
1 --> Volume in drive D is SSD 2 Volume Serial Number is 687D-EF64 3 4 Directory of D:\python\day2 5 6 2016/11/02 18:58 <DIR> . 7 2016/11/02 18:58 <DIR> .. 8 2016/10/30 20:15 596 dictionary.py 9 2016/10/26 16:23 227 login.py 10 2016/10/26 18:31 829 names.py 11 2016/10/29 10:22 496 names08.py 12 2016/10/26 12:11 406 password.py 13 2016/10/30 15:44 1,457 shopping.py 14 2016/11/02 18:46 178 sys.py 15 2016/11/02 18:58 392 sys_mod.py 16 2016/10/29 10:50 152 test09.py 17 2016/10/26 14:08 <DIR> __pycache__ 18 9 File(s) 4,733 bytes 19 3 Dir(s) 764,362,289,152 bytes free
示例2
功能说明:判断输入用户名和密码是否正确
password.py
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 #Author: nulige 4 #import getpass 5 6 _username = 'nulige' 7 _password = '123456' 8 username = input("username:") 9 #password = getpass.getpass("password:") 10 password = input("password:") 11 if _username == username and _password == password: 12 print("Welcome user {name} login...".format(name=username)) 13 else: 14 print("Invalid username or password!")
执行结果:
1 username:nulige 2 password:123456 3 Welcome user huzhihua login...
1 username:nulige 2 password:33333 3 Invalid username or password!
说明:介绍怎么调用模块
写一个名称为:login.py 的模块,然后用sys_mod.py去调用这个login.py的模块
login.py
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 #Author: nulige 4 5 _username = 'nulige' 6 _password = '123456' 7 username = input("username:") 8 #password = getpass.getpass("password:") 9 password = input("password:") 10 if _username == username and _password == password: 11 print("Welcome user {name} login...".format(name=username)) 12 else: 13 print("Invalid username or password!")
sys_mod.py
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 #Author: nulige 4 5 import login
执行结果:
输入错误的用户名和密码
1 username:nulige 2 password:333322 3 Invalid username or password!
输入正确的用户名和密码
1 username:nulige 2 password:123456 3 Welcome user nulige login...
转载于:https://www.cnblogs.com/nulige/p/6023985.html
Python基础-模块相关推荐
- Python基础模块:图像处理模块@PIL(批量分类处理图片及添加水印)
大家好,才哥又来了! 又要上班了,春节总是过的太匆匆. 最近接到一个需求,把一批照片按照分辨率进行分类存储,再将其中指定宽高比的照片设置为特定的分辨率且添加水印. 以下是简单的效果: 目录: 文章目录 ...
- Python基础 模块
点这里查看Python的所有内置函数 介绍: Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地 ...
- python基础---模块与包
1.模块导入方法 常见的场景: 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀,导入模块可以实现功能的重复利用 import加载的模块分为四个通用类别: 1 使 ...
- Python 第2周 - Python基础-模块\数据运算
内容 模块初识 数据运算 bytes数据类型 python数据类型 列表的使用 元组与购物车操作 购物车程序练习 字符串常用操作 字典的使用 三级菜单实例 本周作业-购物车优化 一.模块初识 Pyth ...
- Python基础——模块的安装
文章目录 1.前言 2.什么是外部模块 3.安装 Numpy 1.前言 安装外部的模块有很多种方式, 不同的系统安装形式也不同. 比如在 Windows 上安装 Python 的一些包, 可能还会要了 ...
- Python基础 - 模块 (Module) 和 包(Packages)
1. 模块 (Module) 1. 定义:一般情况下,一个.py文件就称作一个模块 2. 导入方式:[其中,括号表示可写可不写] ① import 模块名1 (as 别名1) , 模块名2 (as 别 ...
- Python基础——模块和包详解以及pip操作模块和包的指令
随着项目越来越大,所有代码都放在一个文件中,已经不能满足我们的需求了.这时候就要将代码进行整理了,模块和包的出现就是为了解决这个问题的.模块可以将一些相关联的代码组合在一个py文件中,包可以将一些相关 ...
- Python基础——第四章:Python循环语句
前言 本文是根据黑马程序员Python教程所作之笔记,目的是为了方便我本人以及广大同学们查漏补缺. 不想做笔记直接来我的频道.当然啦,自己的笔记才是最好的哦! PS:感谢黑马程序员! 教程链接:黑马程 ...
- Python基础——第二章:Python基础语法
前言 本文是根据黑马程序员Python教程所作之笔记,目的是为了方便我本人以及广大同学们查漏补缺. 不想做笔记直接来我的频道.当然啦,自己的笔记才是最好的哦! PS:感谢黑马程序员! 教程链接:黑马程 ...
最新文章
- JAVA Future
- ICO流程,casestudy
- android悬浮按钮弹出与隐藏,Android悬浮窗按钮实现点击并显示/隐藏多功能列表
- Apache 2.2 + Php 5.1 安装问题解决[原创]
- JavaScript预解析、作用域题目记录
- 详解MOS管、IGBT管,不看就亏大了!
- apache camel_Apache Camel中的断路器模式
- 内网安装nginx+keepalived环境配置及简单使用
- MySQL 在高并发下的 订单撮合 系统使用 共享锁 与 排他锁 保证数据一致性
- 图片添加对话气泡app_微信公众号、对话框、看一看功能又更新!儿童版微信也要来了?!...
- 华为鸿蒙万物互联应用,为什么我需要万物互联? 鸿蒙能带来什么?
- Linux的setup命令启动服务名称和功能
- ModuleNotFoundError: No module named ‘pip‘
- 刚刚接触视频剪辑,怎么快速剪视频?
- 计算机普通话培训开班简报,普通话培训第四期简报.doc
- 现代密码学之对称加密-DES及AES算法
- Windows server 2008 R2安装详细教程
- unity5 rendersetting选项
- STM32F407-用TB6600驱动器驱动57步进电机(代码+连线)
- 悦读(小程序)~~~~~~青龙脚本
热门文章
- VC2008下编译使用OpenSSL
- 变量,作用域,和内存问题
- python显示行数_jupyter notebook实现显示行号
- html5初探ppt,HTML5---HTML5初探151019解析.ppt
- arach Linux设置静态,大神面对win7系统archlinux静态网络配置错误造成无法上网的还原办法...
- java awt 监视器_java – 停止所有Awt / Swing线程和监视器和东...
- matlab在线性系统理论中的应用,线性系统理论相关的matlab应用.ppt
- java算法面试题_【干货】经典算法面试题代码实现-Java版
- ping ip 端口_学生会私房菜【20200305期】——Ping命令及其常用参数详解
- 14.Python抠图脚本