赞
踩
概述:
目前代码较少,写在一个文件中还体现不出什么缺点,但随着代码量越来越多,代码就越来越难以维护。
为解决难以维护问题,把很多相似功能的函数分组,分别放到不同的文件中。这样每个文件所包含的内容相对较少,而且对于每个文件的功能可用文件名来体现。一个.py文件就是一个模块
优点:
使用标准库中的模块
#引入模块
import sys
#获取命令行参数的列表
for i in sys.argv:
print(i)
name = sys.argv[1]
age = sys.argv[2]
hobby = sys.argv[3]
print(name, age, hobby)
#自动查找所需模块的路径的列表
print(sys.path)
使用自定义模块
- #一个.py文件就是一个模块
-
- def sayGood():
-
- print(“sunck is a good man”)
-
-
-
- def sayNice():
-
- print(“sunck is a nice man”)
-
-
-
- def sayHandsome():
-
- print(“sunck is a handsome man”)
格式:
import module1[, module2[, module3[…,modulen]]]
import time, random, os
#引入自定义模块,不用加.py后缀
import sunck
#一个模块只会被引入一次,无论执行了多少次import,防止多次引入
#使用模块内容
#格式:模块名.函数名/变量名
使用自定义模块
#作用:从模块中导入一个指定的部分到当前命名空间
#格式:from module import name1[, name2[, …namen]]
from sunck import sayGood, sayNice
#程序内部的函数可将模块中的同名函数覆盖
sayGood()
sayNice()
使用自定义模块(from…import * )
#from … import *
#作用:把一个模块 中所有内容全部导入当前命名空间
from sunck import * #最好少用
sayGood()
模块就是一个可执行的.py文件,一个模块被另一个程序引入,我们不想让模块中的某些代码执行,可以用__name__属性来使程序仅调用模块中的一部分
#每一个模块都有一个__name__属性,当其值等于” __main__”时,表名该模块自身在执行。否则被引入其他文件
#当前文件如果为程序的入口文件,则__name__的属性值为__main__
if __name__ == “__main__”:
print()
else:
print(__name__)
作业:
- import os
-
- import collections
-
-
-
-
-
- def work(path):
-
- resPath = r"C:\Users\89460\Documents\PythonData\sortmail\res"
-
-
-
- #打开文件
-
- with open(path, "r") as f:
-
- while True:
-
- lineInfo = f.readline()
-
-
-
- if lineInfo < 5 :
-
- break
-
- #邮箱的字符串
-
-
-
- mailStr = lineInfo.split("----")[0]
-
- #邮箱类型的目录
-
- #C:\Users\89460\Documents\PythonData\sortmail\res\163
-
- #print(mailStr)
-
- fileType = mailStr.split("@")[1].split(".")[0]
-
- dirStr = os.path.join(resPath, mailStr.split("@")[1].split(".")[0])
-
- if not os.path.exists(dirStr):
-
- #不存在,创建
-
- os.mkdir(dirStr)
-
-
-
- filePath = os.path.join(disStr, fileType + ".txt")
-
- with open(filePath, "a") as fw:
-
- fw.write(mailStr+"\n")
-
-
-
-
-
-
-
- def getAllDirQU(path):
-
- queue = collections.deque()
-
- #进队
-
- queue.append(path)
-
-
-
- while len(queue) != 0:
-
- #出队数据
-
- dirPath = queue.popleft()
-
- #找出所有文件
-
- filesList = os.listdir(dirPath)
-
-
-
- for fileName in filesList:
-
- #绝对路径
-
- fileAbsPath = os.path.join(dirPath, fileName)
-
-
-
- if os.path.isdir(fileAbsPath):
-
- queue.append(fileAbsPath)
-
- else:
-
-
-
- work(fileAbsPath)
-
-
-
- getAllDirQU(r"C:\Users\89460\Documents\PythonData\sortmail")
-
包
import a.sunck
import b.sunck
如果不同的人编写的模同名
为了解决模块命名的冲突,引入了按目录来组织模块的方法,称为包
特点:引入包后,只要顶层的包不与其他人发生冲突,那么模块都不会与别人的发生冲突
注意:目录只有包含一个叫做”__init__.py”的文件才被认作是一个包,基本上目前这个文件中什么也不用写
pip -version
#要安装三方模块,需要知道模块的名字
#Pillow 非常强大的处理图像的工具库
pip install Pillow
#pip install –-upgrade pip
from PIL import Image
#打开图片
im = Image.open("terminal.png")
#查看图片信息
print(im.format, im.size, im.mode)
#设置图片大小
im.thumbnail(150, 100)
#保存成新图片
im.save(“terminal.png”, “JPEG”)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。