天天看点

10.千峰教育模块的使用与面向对象思想简介----自制随堂笔记使用标准库的模块使用自定义模块(import语句)使用自定义模块(from···import语句)使用自定义模块(from···import*语句)一个.py文件就是一个模块name 属性思考:安装第三方模块面向思想简介类的定义类的设计

模块概述

概述:

目前代码较少,写在一个文件中还体现不出什么缺点,但是随着代码量

越来越多,也就越来越难以维护。为了解决难以维护的问题,我们把很多

相似功能的函数分组,分别放到不同的文件中去,这样每个文件所包含的

内容相对较少,而且对于每一个文件的大致功能可以用文件名来体现。很多

编程语言都是这么来组织代码结构。一个.py文件就是一个模块

优点:

1、提高代码的可维护性

2、提高的代码的复用度,当一个模块完毕,可以被多个地方引用

3、引用其他的模块(内置模块和三方模块和自定义模块)

4、避免函数名和变量名的冲突

使用标准库的模块

引入模块

import sys
import time
import datetime



print(sys.argv)


# 获取命令行参数里面的列表
for i in sys.argv:
	print(i)

name = sys.argv[1]
age = sys.argv[2]
hoby = sys.argv[3]
print(name, age, hoby)
# 自动查找所需模块的路径的列表
print(sys.path)
           

上面内容需要在cmd中运行

且要加参数

使用自定义模块(import语句)

# 一个.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")

TT = 100
print("这是sunck.py")
           

引入模块

import语句

格式:

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

import time, random, os

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

import first
# 一个模块只会被引入一次,不管执行了多少次import。
# 防止模块被多次引入

# 使用模块中的内容
# 格式:
# 模块名.函数名/变量名

first.sayGood()
first.sayNice()
first.sayHandsome()

print(first.TT)
           

使用自定义模块(from···import语句)

from···import语句

作用:

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

格式:from module import name1[, name2][, name3][, ····namen]

from first import sayGood, sayNice

程序内部的函数可以将模块内部的同名函数覆盖
def sayGood():
	print("*****")

sayGood()
# sayHandsome() # 没有引入handsome函数
sayNice()
           

使用自定义模块(from···import*语句)

from···import *语句

不推荐使用此种语句

作用:

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

from first import *
"""
这种方式也是会覆盖的
def sayGood():
	print("*****")
"""

sayGood()
           

一个.py文件就是一个模块

# 每一个模块都有一个 __name__属性,当其值等于"__main__"时,
# 表明该模块自身在执行,否则被引入其他文件
# 当前文件如果为程序的入口文件,则__name__属性的值为__main__
if __name__ == "__main__":
	print("这是sunck.py")
else:
	print(__name__)
	def sayGood():
		print("sunck is a good man")

	def sayNice():
		print("sunck is a nice man")

	def sayHandsome():
		print("sunck is a handsome man")
           

name 属性

name 属性:

模块就是一个可执行的py文件,一个模块被

另一个程序引入

我不想让模块中的某些代码执行,可以用__name__

属性来使程序仅调用模块中的一部份

通俗的理解 name == ‘main’:

假如你叫小明.py,在朋友眼中,你是小明(name == ‘小明’);在你自己眼中,你是你自己(name == ‘main’)。

if name == 'main’的意思是:当 .py 文件被直接运行时,if name == ‘main’ 之下的代码块将被运行; 当 .py 文件以模块形式被导入时,if name == 'main’之下的代码块不被运行

思考:

如果不同的人编写的模块同名怎么办?

解决:

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

特点:

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

注意:目录只有包含一个叫做"init.py"的文件才被认作是一个包,主要是为了避免一些滥

竽充数的名字,基本上目前这个文件中什么也不用写

import a.sunck
import b.sunck
import a.kaige

a.sunck.sayGood()
b.sunck.sayGood()
a.kaige.sayGood()
           

安装第三方模块

Mac:无需安装

Linux:无需安装

windows:勾选了pip和Add python.exe to Path

要安装三方模块,需要知道模块的名字

Pillow 非常强大的处理图像的工具库

# 引入了三方库
from PIL import Image

# 打开图片
im = Image.open("111.jpg")
# 查看图片信息
print(im.format, im.size, im.mode)
# 设置图片大小
im.thumbnail((15,10))
# 保存成新图片
im.save("temp.jpg", "JPEG")
           

面向思想简介

软件编程的实质是什么?

软件编程就是将我们的思维装变成计算机能够识别语言的一个过程

什么是面向过程

自上而下顺序执行,逐步求精

其程序结构是按功能划分的为若干基本模块,这些模块形成树状结构

各模块之间的关系尽可能简单,在功能上相对独立

每一个模块内部均是由顺序、选择和循环三种基本结构

其模块化实现的具体方法是使用子程序

程序流程在写程序时就已经决定

什么是面向对象?

把数据及对数据的操作方法放在一起,作为一个相互依赖的整体–对象

对同类对象抽象出其共性,形成类

类中的大多数数据,只能用本类的方法进行处理

类通过一个简单的外接接口与外界发生关系,对象与对象之间通过消息进行通信

程序流程由用户在使用中决定

理解面向对象

面向对象是相对面向过程而言

面向对象和面向过程都是一种思想

面向过程

强调的是功能行为
关注的是解决问题需要哪些步骤
           

面向对象

将功能封装进对象,强调具备了功能的对象
关注的是解决问题需要哪些对象
           

面对对象是基于过程的

类与对象的关系

使用计算机语言就是不断地在描述现实生活中的事物

Python中描述事物通过类的形式体现,类是具体事物概念上的定义

对象即是该类事物实实在在存在的个体

面向对象的特点

是一种符合人们思考习惯的思想

可以将复杂的事情简单化

将程序员从执行者转换成了指挥者

完成需求时:

1、先要去找具有所需功能的对象来用

2、如果该对象不存在,那么创建一个具有所需功能的对象

类的定义

生活中描述事物无非就是描述事物的名称/属性和行为,如:人的身高,体重等属性,有说话、打架等行为

Python中用类来描述事物也是如此

1、属性:对应类中的成员变量

2、行为:对应类中的成员方法

定义类其实在定义类中的成员(成员变量和成员方法)

拥有相同(或者类似)属性和行为的对象都可以抽象出一个类

类的设计

只关心3样东西

事物名称(类名):人

属性:身高、年龄

行为(功能):跑、打架