《食品人工智能基础》课件(下)_第1页
《食品人工智能基础》课件(下)_第2页
《食品人工智能基础》课件(下)_第3页
《食品人工智能基础》课件(下)_第4页
《食品人工智能基础》课件(下)_第5页
已阅读5页,还剩86页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

信息系统的模块化实现任务五任务目标任务分析任务设计任务实现任务分析任务五系统的模块化实现知识目标掌握函数的定义和调用掌握函数的参数和返回值的使用理解函数的嵌套和递归调用理解变量的作用域,了解全局变量和局部变量的使用掌握常用内置函数的使用技能目标能够定义客户画像系统中的函数能够正确调用客户画像系统中的函数能够利用函数重构优化客户画像系统任务设计任务五系统的模块化实现任务描述通过前面任务的学习,同学们已经掌握了Python的基础语法,常用语句,字符串的操作,列表、元组和字典操作,实现了客户“画像”系统的基本功能,能编写程序实现企业客户信息的输入、存储、查找、编辑和删除等功能。但是我们发现,目前的程序中存在大量重复的代码,并且所有的代码都放在一段程序中,结构不够清晰,代码的可读性比较差,项目小组成员之间很难做到合理的分工与合作。带着这些问题,我们开始企业客户“画像”系统函数封装模块的学习,学习函数的概念、函数的定义和调用、函数的参数、函数的返回值、常用内置函数、利用函数优化系统等相关知识和技能。任务五系统的模块化实现5.1函数的定义与调用5.2函数的参数与返回值5.3常用的内置函数5.4利用函数优化系统5.1函数的定义与调用5.1.1函数的定义及其作用1、什么是函数?在程序中,函数就是具备某一功能的工具,事先将工具准备好即函数的定义。2、为什么要用函数?在开发时,使用函数可以提高编写的效率以及代码的重用。3、

定义函数

def函数名([形式参数列表]):

函数体[return返回值列表]基于上述格式,我们对函数定义的规则进行说明:(1)函数代码块以def关键字开头,后面是一个空格、函数名和圆括号();(2)函数名的命名规则跟变量的命名规则是一样的,即只能是字母、数字和下划线组成,且不能以数字开头,不能跟关键字重名。5.1函数的定义与调用(3)函数的参数必须放在圆括号中,实际定义函数时,可以没有参数,也可以有一个或多个参数;(4)函数内容以冒号开始,并且缩进;(5)函数的第一行语句习惯用文档字符串来存放函数说明;(6)return表达式结束函数,可以选择性返回一个值给调用方,不带表达式的return相当于返回None,省略return也认为返回None,即返回空值.5.1函数的定义与调用defmenu():"""显示系统菜单"""print("|---欢迎进入食品企业大数据客户“画像”系统|")print(“|---1.添加客户“画像”数据---|")print("|---2.删除客户“画像”数据---|")print("|---3.修改客户“画像”数据---|")print("|---4.搜索客户“画像”数据---|")print("|---5.显示全部客户“画像”数据信息---|")print("|---6.退出食品企业大数据客户“画像”系统---|")5.1函数的定义与调用4、函数调用(1)什么是调用函数遇到应用场景拿来就用即函数的调用;函数必须遵循先定义后调用的原则。(2)为何要调用函数启用函数的功能(3)函数调用的三种方式作为语句形式出现(直接写在一行中)函数名(参数)在表达式中出现(此时函数需要有返回值)变量名=函数名(参数)作为另一个调用函数的实际参数出现(此时函数需要有返回值)变量名=函数名(函数名())5.1函数的定义与调用4、函数调用(4)调用函数的方法很简单,通过“函数名()”即可完成调用。#调用显示系统菜单函数menu()5.1函数的定义与调用|---欢迎进入食品企业大数据客户“画像”系统---||---1.添加客户“画像”数据---||---2.删除客户“画像”数据---||---3.修改客户“画像”数据---||---4.搜索客户“画像”数据---||---5.显示全部客户“画像”数据信息---||---6.退出食品企业大数据客户“画像”系统---|5.2函数的参数与返回值1、参数的作用

函数,把具有独立功能的代码块组织成为一个小模块,在需要的时候调用函数的参数,增加函数的通用性,针对相同的数据处理逻辑,能够适应更多的数据。

(1)在函数内部,把参数当作变量使用,进行需要的数据处理。

(2)函数调用时,按照函数定义的参数顺序,把希望在函数内部处理的数据,通过

参数传递。2、形参和实参

–形参:定义函数时,小括号中的参数,是用来接收参数用的,在函数内部作为变量使用。

–实参:调用函数时,小括号中的参数,是用来把数据传递到函数内部用的。5.2函数的参数与返回值调用函数tpl_sum()定义函数tpl_sum()3、函数的返回值

所谓“返回值”,就是函数执行完毕后,通过return语句返回给调用者的结果。return语句表示结束函数的执行,如果没有return语句,或者return语句不返回任何值,Python认为返回None,即返回空值。如果一个函数用return返回多个值,多个值以元组的形式保存。5.2函数的参数与返回值4、变量(1)局部变量

在函数内部定义的普通变量只在该函数内起作用,称为局部变量,当函数运行结束后,局部变量会被自动删除而不可访问。5.2函数的参数与返回值(1)局部变量5.2函数的参数与返回值函数内部函数外部

可以看到,如果试图在函数外部访问其内部定义的变量,Python解释器会报NameError错误,并提示我们没有定义要访问的变量,这也证实了当函数执行完毕后,其内部定义的变量会被销毁并回收。

值得一提的是,函数的参数也属于局部变量,只能在函数内部使用。(2)全局变量除了在函数内部定义变量,Python还允许在所有函数的外部定义变量,这样的变量称为全局变量(GlobalVariable)。

和局部变量不同,全局变量的默认作用域是整个程序,即全局变量既可以在各个函数的外部使用,也可以在各函数内部使用。

定义全局变量的方式有以下2种:5.2函数的参数与返回值(2)全局变量5.2函数的参数与返回值函数外部在函数体内定义全局变量。即使用global关键字对变量进行修饰后,该变量就会变为全局变量。例如:注意,在使用global关键字修饰变量名时,不能直接给变量赋初值,否则会引发语法错误。5.3常用的内置函数5、内置函数内置函数,就是Python提供的,可以直接拿来直接用的函数。内置函数的数量必须被严格控制,否则Python解释器会变得庞大和臃肿。一般来说,只有那些使用频繁或者和语言本身绑定比较紧密的函数,才会被提升为内置函数。

例如,在屏幕上输出文本就是使用最频繁的功能之一,所以print()是Python的内置函数。在Python2.x中,print是一个关键字;到了Python3.x中,print变成了内置函数。除了print()函数,Python解释器还提供了更多内置函数,下表列出了Python3.x中的所有内置函数。5.3常用的内置函数5.3常用的内置函数这节课我们主要使用字符串内置函数解决“系统设置密码”功能通常我们在设置相关秘密的时候,要求我们必须要求字母大小写,字符以及数字同时存在。接下来我们将借助字符串内置函数,实现账号密码的输入和保护。

根据功能确定使用的函数:1、密码长度大于82、包含数字3、包含字母5.3常用的内置函数1、密码长度大于8首先我们获取密码的长度,我们的密码默认为字符串行,我们可以用自带len()函数进行验证。

pwd是传递的密码5.3常用的内置函数2、包含数字功能我们密码中必须要包括数字,此时我们可以使用isnumeric()函数进行实现。pwd是传递的密码5.3常用的内置函数3、包含字母功能我们密码中必须要包括字母,此时我们可以使用isalpha()函数进行实现。pwd是传递的密码

has_str=False

foriinpwd:

ifi.isalpha():

has_str=True

break5.3常用的内置函数

pwd=input()

iflen(pwd)<8:

print("密码长度必须大于8位!")

has_num=False

foriinpwd:

ifi.isnumeric():

has_num=True

break

ifhas_num==False:

print("密码长度必须包括数字!")

has_str=False

foriinpwd:

ifi.isalpha():

has_str=True

break

ifhas_str==False:

print("密码长度必须包括字母!")has_upper=False

has_lower=False

ifhas_num==Falseorhas_str==Falseorhas_lower==Falseorhas_upper==False:

print("密码错误,请重新输入!")

else:

print("密码设置正确!")

exit()

任务描述:在本任务中将重新划分企业客户画像系统的功能模块,分析系统设计思路,利用函数实现各个模块的功能,定义各个功能实现的函数,如显示菜单函数,接收用户输入选择函数,企业客户信息输入函数、企业客户信息输出函数、企业客户信息查找函数、企业客户信息修改函数,判断用户是否存在函数等等,并利用函数重构企业客户画像系统,对系统功能模块进行函数封装,实现企业客户画像系统。5.4利用函数优化系统5.4利用函数优化系统系统功能分析

客户“画像”系统负责管理维护客户的信息,可以适时地更新客户数据。例如,新客户加入,可以在系统中录入客户信息。设计一个客户画像系统,要求如下:(1)使用自定义函数,完成系统功能的模块化;(2)企业客户信息包括:客户编号(字符串)、姓名(字符串)、年龄(数值类型)、性别(布尔类型)、电话(字符串)、单位(字符串)、地址(字符串);(3)系统具有的功能:添加、删除、修改、查找和查看客户信息以及退出系统功能。5.4利用函数优化系统defadd():"""添加客户信息"""name=input("请输入要添加的客户姓名:")#判断客户是否存在

ifnameincustom_info:print("该客户已经存在!")else:#按提示输入客户信息

sno=input("请输入编号:")name=input("请输入姓名:")sex=eval(input("请输入性别:"))tel=input("请输入电话:")age=input("请输入年龄:")unit=input(“请输入单位:")address=input(“请输入地址:")#定义字典cus,把客户信息存入字典

cus

=dict()cus[“编号"]=snocus["姓名"]=namecus["性别"]=sexcus[“电话"]=telcus[“年龄"]=agecus[“单位"]=unitcus[“地址"]=address#把客户信息添加到custom_infocustom_info[name]=cus5.4利用函数优化系统defmodify():#修改客户信息name=input(“请输入要修改的客户姓名:")ifnameincustom_info:#获取该客户的信息

cus=custom_info[name]#输入该客户要修改的新信息name=input("请输入要添加的客户姓名:")

sno=input("请输入编号:")name=input("请输入姓名:")sex=eval(input("请输入性别:"))tel=input("请输入电话:")age=input("请输入年龄:")unit=input(“请输入单位:")address=input(“请输入地址:")#修改客户信息cus[“编号"]=snocus["姓名"]=namecus["性别"]=sexcus[“电话"]=telcus[“年龄"]=agecus[“单位"]=unitcus[“地址"]=address#把修改的客户信息添加到custom_infocustom_info[name]=cuselse:print(“该客户不存在!")5.4利用函数优化系统defdele():#删除客户信息

name=input(“请输入要删除的客户姓名:")ifnameincustom_info:ch=input("您确定要删除吗?(Y/N)")ifch=="Y"orch=="y":del(custom_info[name])else:print(“该客户不存在!")5.4利用函数优化系统defsearch():#查找客户信息

name=input(“请输入要查找的客户姓名:")ifnameincustom_info:#调用函数,输出该客户信息

print_customt(custom_info[name])else:print(“该客户不存在!")5.4利用函数优化系统defprint_customt(cus):"""输出学生的详细信息"""#输出客户详细信息

print(f"姓名:{cus['姓名']}")print(f"学号:{cus['学号']}")print(f“性别:{cus[‘性别’]}")print(f’’年龄:{cus[‘年龄’]}")print(f"电话:{stu['电话']}")print(f“单位:{stu[‘单位']}")print(f“地址:{stu[‘地址']}")5.4利用函数优化系统defprint_all_custom():#以列表形式输出全部客户信息

print(“客户信息列表")#输出分隔线

print("-"*130)#输出列表标题

print(“姓名\t编号\t\t性别\t电话\t\t\t单位\t\t\t地址")#循环输出客户列表

forcusincustom_info.values():#输出客户基本信息

print(stu['姓名'],end="\t")print(stu[‘编号'],end="\t\t")print(sex[‘性别’],end="\t")print(stu[‘电话'],end="\t\t\t")print(stu[‘单位'],end="\t\t\t")print(stu[‘地址'])#输出分隔线print("-"*130)5.4利用函数优化系统defmain():#调用menu(),显示主菜单

menu()whileTrue:#获取用户的输入序号

order_code=input("请输入相应的操作序号(1--6):")try:#异常处理

choice=int(order_code)ifchoice==1:add()#调用添加客户信息的函数

elifchoice==2:dele()#调用删除客户信息的函数

elifchoice==3:modify()#调用修改客户信息的函数

elifchoice==4:search()#调用查找客户信息的函数

elifchoice==5:print_all_students()#调用输出全部客户信息的函数

elifchoice==6:ch=input("您确定要退出系统吗?(Y/N)")#确认退出系统吗?

ifch=="Y"orch=="y":save_data()breakelse:print("输入不合法!请输入合法数字序号(1—6)")exceptValueError:#捕获异常

print("请输入数字选项!请输入合法数字序号(1—6)")#输出分割线

print("="*50)任务实施任务效果显示主菜单,提示用户选择功能操作;获取用户选择的功能序号;根据用户的选择,调用不同的函数,执行相应的功能操作;客户画像系统显示主菜单提示用户选择功能操作添加客户信息删除客户信息修改客户信息查找客户信息查看全部客户信息退出系统功能谢谢!漯河食品职业学院信息工程系食品企业信息系统数据文件操作任务六任务分析任务目标知识目标掌握文件的基本操作,如文件打开、关闭、读写等掌握文件操作技巧,实现不同类型,不同大小文件操作利用pickle与json实现文件数据的序列化操作技能目标熟练掌握Python中文件的相关操作,基本方法熟练掌握利用pickle与json实现数据序列化任务描述文件操作是各类应用软件开发中,都必不可少的重要工作。通过完成本任务,学生能够掌握文件的基本操作,实现文本文件、二进制文件的相关操作以及使用pickle与json模块实现序列化与反序列化操作。最终,通过文件操作,实现信息系统数据保存。任务设计任务内容6-1实现文件的基本操作6-2实现文件的读写操作6-3实现文件数据序列化存储6-1实现文件的基本操作在前面的学习中,虽然实现了信息的录入,但信息录入后,并没有进行相关保存,所以,系统重启后,需要重新录入相关信息,为此造成了该系统的额外工作,增加了工作量。为了克服每次系统重启后,需要大量时间进行数据重新录入,本系统需要把数据以文件形式保存在磁盘或存储介质中(如硬盘、U盘、云盘等),通过文件让系统在下一次执行时,可直接调用,不必重复录入,从而提高系统运行效率。本次任务通过讲解文件的相关知识及如何通过Python实现文件的基本操作,从而通过文件操作完成信息系统中信息文件的保存。6-1实现文件的基本操作在程序系统中,数据保存主要通过文件的形式进行,文件是数据的抽象和集合。你可以把相关信息,保存在“信息.txt”中,这样,程序运行时,就可以通过调用该文件,载入相关数据。对于文件操作,需要掌握几个知识点:1.指定文件的名称2.查找文件和指定文件的位置查找文件和指定文件的位置如何查找文件和指定文件的位置这涉及到了文件的路径,如下图所示,查找generator.py文件的位置,这里体现的是绝对路径。查找文件和指定文件的位置文件路径主要有绝对路径和相对路径两个概念绝对路径:就是从根目录开始这个路径上的所有文件夹名真正的路径。使用该路径一定能找到相应文件。信息.txt所在绝对路“C:\Users\Admin\PycharmProjects\信息.txt”进行访问,打开程序代码如下:在windows环境下,Python程序中使用“\\”进行层级表示,其中,第一个“\”是转义符。#信息.txt与test1.py文件不在同一目录下,需要绝对路径访问f=open('C:\\Users\\Admin\\PycharmProjects\\信息.txt')查找文件和指定文件的位置相对路径:顾名思义,相对路径就是相对于当前文件的路径比如我们执行读取文件“信息.txt“的test2.py,而“信息.txt”文件恰好又和这个test2.py在同一个目录下,如下图所示:那么程序对“信息.txt”文件进行读取时,可以利用相对路径直接调用,代码如下:#信息.txt与程序文件在同一目录下f=open("信息.txt")6-1实现文件的基本操作文件的展示方式通常有两种,一种是二进制文件,一种是文本文件。通过前面的学习,我们可以理解,本质上所有的文件都是二进制形式存储二进制文件:二进制文件直接由0和1组成,没有统一字符编码,该类文件一般存在二进制0和1的组织结构,如图像(.png)和视频(.avi)文件等。文本文件:文本文件就是由单一特定编码组成的文件,如我们经常遇到的“UTF-8”编码,如.py文件和.txt文件等。在Python程序设计中,主要是使用Python提供的相关方法实现应用,具体是在Python中实现这三个步骤,都对应了相关的操作方法。其过程如图所示:打开文件实现对文件的打开,采用的是Python中的open()方法。如打开目录“C:\Users\Admin\PycharmProjects”下的“信息.txt”文件各个参数的细节如下:name:一个包含了你要访问的文件名称的字符串值。mode:决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。打开文件文件常用的不同打开模式,具体如下表所示:打开文件如果在打开文件之后和关闭文件之前发生了错误导致程序崩溃,这时文件就无法正常关闭。如何恰当关闭文件,避免此类问题呢?最好的解决办法是在管理文件对象时推荐使用with关键字,引入上下文管理器进行相关操作。利用with关键字打开文件,执行完with语句内容之后,自动关闭文件对象,可让Python去确定关闭的时机,你只需打开文件,并在需要时使用它,Python会在恰当的时候自动将其关闭。编写测试代码,具体代码如下:with关键字后面的open()方法的返回值赋值给变量f,当离开with代码块的时候,系统会自动调用f.close()方法,with的作用类似

try/finally语句,但with语句更简洁、更安全。#利用with关键字引入上下文管理器进行相关文件操作withopen("信息.txt","rt")asf:print(f.readline())6-2实现文件的读写操作在前面的学习中,完成了文件的打开,关闭的基本操作,也利用with关键字很好的解决了文件关闭的节点问题。当文件打开后,如何对文件进行读写操作,是文件操作的核心,正如如何完善产品介绍的PPT一样,为了实现信息录入时写入相关文件,使用时调用相关文件并读取内容,本次任务通过讲解文件读写的相关函数,通过编程实现文件的读写操作,从而通过文件操作完成系统中信息文件的写入和读取。文件写入操作要想利用文件进行数据接收和提供,需要在Python中利用读写方法实现将数据写入文件和从文件读取数据。文件写入主要方法:操作方法功能描述write(str)将字符串或字节流写入文件,返回的是写入的字符长度。writelines(sequence)向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。seek(offset[,whence])把文件指针移动到新的字节位置,offset表示相对于whence的位置。whence为0表示从文件头开始计算,1表示从当前位置开始计算,2表示从文件尾开始计算,默认为0。如果操作成功,返回新的文件位置,操作失败,返回-1tell()返回一个整数,表示当前文件指针的位置,即到文件起始位置的比特数文件写入操作文件书写的步骤主要按照打开--写入--(保存)关闭进行,在进行写入是一定要注明文件的打开方式,因为文件的默认打开方式是'r'只读模式。因为没有指明文件以'w'的方式进行打开,所以无法利用write()进行写入。所以此代码进行如下修改:withopen("信息.txt")asf:

print(f)

f.write(‘Welcome’)withopen("信息.txt",“w")asf:

print(f)

f.write(‘Welcome’)文件写入操作文件进行写操作时,还要防治文件原有内容是否被覆盖以上代码会将原有内容覆盖,下面的代码将w模式改为a模式,将保留原有数据,将新增内容追加到原有数据后面:withopen("信息.txt",“w")asf:

print(f)

f.write(‘Welcome’)withopen("信息.txt",“a")asf:

print(f)

f.write(‘Welcome’)文件读取操作关于文件读取操作,文件对象提供了三个“读”方法:read()、readline()和readlines(),具体表示如下表所示:操作方法功能描述read([size])从文本文件中读取size个字符的内容作为结果返回,或从二进制文件中读取指定数量的字节并返回,如果省略size则表示读取所有内容readline()从文本文件中读取一行内容作为结果返回readlines()把文本文件中的每行文本作为一个字符串存入列表中,返回该列表,对于大文件会占用较多内存,不建议使用文件读取操作read()从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,它范围为字符串对象,它通常用于将文件内容放到一个字符串变量中,对于连续的面向行的处理,不必要使用该函数,而且如果文件大于可用内存,则read()方法也不可能实现这种处理。readline()

方法从字面意思可以看出,每次读出一行内容,所以,利用该方法在读取时,占用内存小,比较适合大文件,该方法返回一个字符串对象。readlines()函数是读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素。该函数与readline()的不同是该函数一次读取整个文件,和read()函数一样。readlines()是自动将文件所有内容分析成一个行的列表,该列表可以由Python的for...in...结构进行处理。程序在操作文件时,涉及到把数据先读取到内存进行使用,如果文件比较大,显然不能使用read()和readlines()方法,可利用forlineinf方式,对可迭代对象f进行迭代,这样会自动的使用缓冲IO以及内存管理。6-3实现文件数据序列化存储通过前面的学习,掌握了基本的数据写入和读取,但我们发现系统往往把信息存储在列表和字典等数据结构中。用户关闭程序时,总是要从内存中保存他们提供的信息,我们把变量从内存中变成可存储或传输的过程称为序列化。序列化后,可以把该内容写入磁盘,或通过网络进行传输。反之,把变量内容从序列化的对象重新读到内存称为反序列化。Python中实现序列化的模块叫pickle模块,通过该模块相应方法可以用于对Python对象结构进行序列化和反序列的二进制格式之间的转换。另外,Python允许使用称为JSON(JavaScriptObjectNotation)的流行数据交换格式,而不是让用户不断的编写和调试代码以将复杂的数据类型保存到文件中。模块json让你能够将简单的Python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据。你还可以使用json在Python程序之间分享数据。本节任务主要是通过pickle模块与json模块的学习,实现文件数据序列化存储。6-3实现文件数据序列化存储把变量从内存中变成可存储或传输的过程称之为序列化,Python中称之为pickling。笼统的理解就是按照某种规则,我们把内存中的数据保存到文件中,而文件是一个个字节序列。所以必须把内存数据转换为字节序列,输出到文件,这就是序列化。序列化之后我们就可以把内容写入到磁盘或者通过网络传输出去。反之,把变量从序列化的对象重新读取到内存中称之为反序列化,Python中称之为un-pickling。也就是从文件的字节序列恢复到内存中。通过序列化可以实现持久化保持状态,也可以实现跨平台的数据交互。实现序列化存储最常用的主要有两种,分别是pickle模块与json模块。pickle模块pickle提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。pickle模块只能在python中使用,不能跨语言使用python中几乎所有的数据类型(列表,字典,集合,类等)都可以用pickle来序列化。pickle模块常用函数如下表所示:pickle模块obj

:序列化对象,将对象obj保存到文件file中去file:表示保存到的类文件对象,file必须有write()接口,file可以是一个以’wb’打开的文件或者是一个StringIO对象,也可以是任何可以实现write()接口的对象;protocol:序列化模式,默认是0(ASCII协议,表示以文本的形式进行序列化),protocol的值还可以是1和2(1和2表示以二进制的形式进行序列化。其中,1是老式的二进制协议;2是新二进制协议)。

pickle.dump(obj,file,[,protocol])

JSON模块JSON(JavaScriptbjectNotation)是一种轻量级的数据交换格式,它是JavaScript的子集,易于人阅读和编写。JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便。前端和后端进行数据交互,其实就是JS和Python进行数据交互。如下图所示:JSON模块JSON表示的对象就是标准的JavaScript语言的对象,JSON和Python的内置的数据类型对应如下:JSON模块Python内置的json模块提供了非常完善的Python对象到JSON格式的转换。JSON常用方法如下:JSON模块dumps()跟loads()都是直接将Python对象跟JSON字符串相互转换的方法,结果可以用一个变量接收,而dump()跟load()会把结果放到文件或者从文件中读取结果,因此需要传一个文件句柄,编写列表变量stu_info存储一组信息,利用相应函数实现序列化和反序列化。类似的还有不写入文件的函数dumps()与loads()。任务实施实施步骤在前面学习完成的基础上,实现信息系统的数据存储。首先定义write()函数,用来完成文件书写功能。使用try...except来实现保证无论是否出错都能正确地关闭文件。定义show()函数,利用print打印相关内容。任务小结

本任务介绍了Python文件操作的基本操作,描述了文件的相关概念,介绍了相对和绝对路径,在此基础上,介绍了文件操作的基本函数open()、close()。

然后介绍了文件的读写操作,进行文件的写入和读取。本任务还介绍了文件的序列化,通过pickle与json模块的讲解,以及相关的序列化和反序列化方法。并通过实例进行了相应的展示最后,在以上知识学习的基础上,完成信息系统相关函数的书写。谢谢!漯河食品职业学院信息工程系食品企业信息系统综合实现任务七任务目标系统模块封装系统测试系统发布任务描述在之前的系统实现中,我们已经通过函数实现系统模块化。但在实现的过程中,不知道如何将整个系统整合在一起,如何将每个模块封装程一个大的系统。本次任务我们将通过学习面向过程设计和面向对象设计的定义和区别,掌握面向对象的三大特征封装性、继承性和多态性。从而利用面向对象程序设计思想将系统模块完成封装。完成封装后的系统经过测试就可以发布了。7-1系统模块封装面向过程程序设计思想分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向对象程序设计思想把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。面向对象以功能划分模块,面向过程以步骤划分模块。面向过程程序设计侧重于怎么做1.把完成某一个需求的所有步骤从头到尾逐步实现2.根据开发要求,将某些功能独立的代码封装成一个又一个函数3.最后完成的代码,就是顺序的调用不同的函数特点:1.注重步骤和过程,不注重职责分工2.如果需求复杂,代码变得非常复杂3.开发复杂的项目的时候,没有固定的套路,开发难度很大面向对象程序设计侧重于谁来做相比较函数,面向对象是更大的封装,根据职责在一个对象中封装多个方法1.在完成某一个需求前,首先确定职责-要做的事(方法)2.根据职责确定不同的对象,在对象内部封装不同的方法(多个)3.最后完成代码,就是顺序的让不同的对象调用不同的方法特点:1.注重对象和职责,不同的对象承担不同的职责2.更加适合对复杂的需求变化,是专门应对复杂项目的开发,提供固定的套路3.需要在面向过程的基础上,再学习一些面向对象的语法面向对象程序设计面向对象有两个核心的概念类:是一类具有相同特征或行为的事物的一个统称对象:由类创建出来的一个具体的存在类和对象的关系:先有类再有对象类是模板对象是根据这个模板创建出来的类只需要有一个对象可以有多个面向对象程序设计类的定义1.格式:class类名:

类的内容2.要求:class关键字后是一个空格,然后接着一个类名。3.注意:在实际项目开发中,类名一般采用的是首字母大写。也可以按照自己的习惯来定义类名,但是推荐类名首字母大写这种惯例,因为整个项目开发中,代码命名统一性也需要注意的。面向对象程序设计使用类1.类定义与函数定义(def语句)一样必须被执行才会起作用。类中的add()方法称为成员方法,对于成员方法的定义是对象的行为,我们可以理解成类的行为就是添加学生信息。2.注意:类的成员方法中的第一个常常被命名为self。这是一个约定:self这一名称在python中绝对没有特殊含义。如果不遵循此约定会使得你编写的代码对其他python程序员来说缺乏可读性。面向对象程序设计类的对象我们有了类,如何让程序完成类的某一功能呢?也就是我们必须让类能够运行起来,可以通过创建类的实例对象,类相当于是抽象的,但是类的实例对象是具体的。我们通过具体和抽象的交互,最终实现类程序的运行。通过实例让对象程序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论