1 模块概述

01-10. 模块的使用与面向对象思想简介01

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

为了解决难以维护的问题,我们把很多相似功能的函数分组,分别放到不同的文件中取。这样每个文件所包含的内容相对较少,而且对于每一个文件的大致功能可用用文件名来体现。很多编程语言都是这么来组织代码结构。一个.py文件就是一个模块。

模块具有以下优点:

  • 提高代码的可维护性
  • 提高了代码的复用度,当一个模块完毕,可以被多个地方引用
  • 引用其他的模块(内置模块和三方模块和自定义模块)
  • 避免函数名和变量名的冲突

使用标准库模块

  1. #引入模块
  2. import sys
  3. print(sys.argv)
  4. #获取命令行参数的列表
  5. for i in sys.argv:
  6. print(i)
  7. '''
  8. name = sys.argv[1]
  9. age = sys.argv[2]
  10. hoby = sys.argv[3]
  11. print(name, age, hoby)
  12. '''
  13. #自动查找所需模块的路径的列表
  14. print(sys.path)

使用自定义模块

import

01-10. 模块的使用与面向对象思想简介02

格式 :

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

引入了自定义模块,不用加.py后缀。注意:一个模块只会被引入一次,不管你执行了多少次import,防止模块被多次引入。

使用模块中的内容格式:

模块名.函数名/变量名

  1. import sunck #需事先已经定义好sunck模块
  2. sunck.sayGood()
  3. print(sunck.TT)

from-import

01-10. 模块的使用与面向对象思想简介02

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

格式:

from module import name1[, name2[, ……namen]]

  1. from sunck import sayGood, sayNice #需事先已经定义好sunck模块
  2. sayGood()
  3. sayNice()

from-import*

01-10. 模块的使用与面向对象思想简介03

把一个模块中所有的内容全部导入当前命名空间(不建议过多使用此方法)。

格式:

  1. from module import *
  2. from sunck import *
  3. sayGood()

2 name属性

01-10. 模块的使用与面向对象思想简介03

模块就是一个可执行的.py文件,一个模块被另一个程序引入,如不想让模块中的某些代码执行时,可以用name属性来使程序仅调用模块中的一部分。每一个模块都有一个name属性,当其值等于”main“时,表明该模块自身在执行,否则被引入其他文件。

  1. #当前文件如果为程序的入口文件,则__name__属性的值为__main__
  2. if __name__ == "__main__":
  3. print("这是sunck.py")
  4. else:
  5. def sayGood():
  6. print("sunck is a very good man!")
  7. def sayNice():
  8. print("sunck is a nice man!")
  9. def sayHandsome():
  10. print("sunck is a handsome man!")

3 包

01-10. 模块的使用与面向对象思想简介05

为了解决模块命名的冲突,引入了按目录来组织模块的方法,称为包。

引入了包以后,只要顶层的包不与其他人发生冲突,那么模块都不会与别人的发生冲突。

注意:目录只有包含一个叫做“init.py”的文件才被认作是一个包,主要是为了避免一些滥竽充数的名字,基本上目前这个文件中什么也不用写。

  1. import a.sunck #引用包只能用import
  2. import b.sunck
  3. a.sunck.sayGood()
  4. b.sunck.sayGood()

4 安装第三方模块

01-10. 模块的使用与面向对象思想简介06

Linux系统下无需安装;Windows系统下,安装Python时需勾选了“pip和Add python.exe to Path”。可以用cmd命令“pip -V”查看下是否pip安装成功。

要安装三方模块,需要知道模块的名字,如“Pillow”,一个非常强大的处理图像的工具库。如需安装,则在cmd下输入“pip install Pillow”,如果报错,则输入“pip install —upgrade pip”。在报错,则说明网络错误。(可不可以先下载下来再安装?)

  1. #引入了三方库
  2. from PIL import Image
  3. #打开图片
  4. im = Image.open("111.jpg") #应该在同目录下,否则应该用绝对路径
  5. #查看图片的信息
  6. print(im.format, im.size, im.mode)
  7. #设置图片的大小
  8. im.thumbnail((150, 100))
  9. #保存成新图片
  10. im.save("temp.jpg", "JPEG")