当前位置:   article > 正文

千峰笔记-模块_千峰凯哥

千峰凯哥

 

模块引入

 

概述:

目前代码较少,写在一个文件中还体现不出什么缺点,但随着代码量越来越多,代码就越来越难以维护。

为解决难以维护问题,把很多相似功能的函数分组,分别放到不同的文件中。这样每个文件所包含的内容相对较少,而且对于每个文件的功能可用文件名来体现。一个.py文件就是一个模块

 

 

 

优点:

  1. 提高代码的可维护性
  2. 提高了代码的复用度
  3. 引用其他的模块(内置模块和三方模块和自定义模块)
  4. 避免函数名和变量名的冲突

 

 

import

 

使用标准库中的模块

 

#引入模块

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)

 

使用自定义模块

  1. #一个.py文件就是一个模块
  2. def sayGood():
  3.       print(“sunck is a good man”)
  4. def sayNice():
  5.       print(“sunck is a nice man”)
  6. def sayHandsome():
  7.       print(“sunck is a handsome man”)

 

格式:

import module1[, module2[, module3[…,modulen]]]

import time, random, os

 

#引入自定义模块,不用加.py后缀

import sunck

#一个模块只会被引入一次,无论执行了多少次import,防止多次引入

 

#使用模块内容

#格式:模块名.函数名/变量名

 

from…import…

 

使用自定义模块

 

#作用:从模块中导入一个指定的部分到当前命名空间

#格式:from module import name1[, name2[, …namen]]

 

from sunck import sayGood, sayNice

 

#程序内部的函数可将模块中的同名函数覆盖

 

sayGood()

sayNice()

 

from…import *

 

使用自定义模块(from…import * )

 

#from … import *

#作用:把一个模块 中所有内容全部导入当前命名空间

 

from sunck import *    #最好少用

 

sayGood()

 

__name__属性

 

模块就是一个可执行的.py文件,一个模块被另一个程序引入,我们不想让模块中的某些代码执行,可以用__name__属性来使程序仅调用模块中的一部分

 

 

#每一个模块都有一个__name__属性,当其值等于” __main__”时,表名该模块自身在执行。否则被引入其他文件

 

#当前文件如果为程序的入口文件,则__name__的属性值为__main__

if __name__ == “__main__”:

      print()

else:

      print(__name__)

 

 

作业:


 

  1. import os
  2. import collections
  3. def work(path):
  4.       resPath = r"C:\Users\89460\Documents\PythonData\sortmail\res"
  5.      
  6.     #打开文件
  7.       with open(path, "r") as f:
  8.             while True:
  9.             lineInfo = f.readline()
  10.            
  11.             if lineInfo < 5 :
  12.                 break
  13.             #邮箱的字符串
  14.            
  15.             mailStr = lineInfo.split("----")[0]
  16.             #邮箱类型的目录
  17.             #C:\Users\89460\Documents\PythonData\sortmail\res\163
  18.             #print(mailStr)
  19.             fileType = mailStr.split("@")[1].split(".")[0]
  20.             dirStr = os.path.join(resPath, mailStr.split("@")[1].split(".")[0])
  21.                   if not os.path.exists(dirStr):
  22.                 #不存在,创建
  23.                 os.mkdir(dirStr)
  24.                
  25.             filePath = os.path.join(disStr, fileType + ".txt")
  26.             with open(filePath, "a") as fw:
  27.                 fw.write(mailStr+"\n")
  28.            
  29.      
  30. def getAllDirQU(path):
  31.       queue = collections.deque()
  32.       #进队
  33.       queue.append(path)
  34.      
  35.       while len(queue) != 0:
  36.             #出队数据
  37.             dirPath = queue.popleft()
  38.             #找出所有文件
  39.             filesList = os.listdir(dirPath)
  40.             for fileName in filesList:
  41.                   #绝对路径
  42.                   fileAbsPath = os.path.join(dirPath, fileName)
  43.                  
  44.             if os.path.isdir(fileAbsPath):
  45.                 queue.append(fileAbsPath)
  46.             else:
  47.                
  48.                 work(fileAbsPath)
  49. 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”)

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/469450
推荐阅读
相关标签
  

闽ICP备14008679号