3python函数及代码复用

上传人:ali****an 文档编号:118825985 上传时间:2019-12-26 格式:PPT 页数:91 大小:1.46MB
返回 下载 相关 举报
3python函数及代码复用_第1页
第1页 / 共91页
3python函数及代码复用_第2页
第2页 / 共91页
3python函数及代码复用_第3页
第3页 / 共91页
3python函数及代码复用_第4页
第4页 / 共91页
3python函数及代码复用_第5页
第5页 / 共91页
点击查看更多>>
资源描述

《3python函数及代码复用》由会员分享,可在线阅读,更多相关《3python函数及代码复用(91页珍藏版)》请在金锄头文库上搜索。

1、函数和代码码的复用 函数的定 义 微实实例:生日歌。 过生日时要为朋友唱生日歌,歌词为: Happy birthday to you! Happy birthday to you! Happy birthday, dear Happy birthday to you! 编写程序为Mike和Lily输出生日歌。最简单的实现方法是 重 复使用print()语句 函数的基本使用 函数的定 义 函数是一段具有特定功能的、可重用的语句组,用函数名 来 表示并通过函数名进行完成功能调用。 函数也可以看作是一段具有名字的子程序,可以在需要的地 方调用执行,不需要在每个执行地方重复编写这些语句。 每次使用函数

2、可以提供不同的参数作为输入,以实现对 不 同数据的处理;函数执行后,还可以反馈相应的处理结果 。 函数是一种功能抽象 函数的定 义 Python定义一个函数使用def保留字,语法形式如下 : def (): 注释 return 函数的定 义 1 2 3 4 print(Happy birthday to you!) print(Happy birthday to you!) print(Happy birthday, dear Mike!) print(Happy birthday to you!) 最简单的实现方法是重复使用print()语句,如下 : 函数的定 义 微实例5.1m5.1Ha

3、ppyBirthday.py 1 2 3 4 5 6 7 8 9 10 def happy(): print(Happy birthday to you!) def happyB(name): happy() happy() print(Happy birthday, dear !.format(name) happy() happyB(Mike) print() happyB(Lily) Happy birthday to you! Happy birthday to you! Happy birthday, dear Mike! Happy birthday to you! Happy b

4、irthday to you! Happy birthday to you! Happy birthday, dear Lily! Happy birthday to you! 函数调用的过 程 程序调用一个函数需要执行以下四个步骤: (1)调用程序在调用处暂停执行; (2)在调用时将实参复制给函数的形参; (3)执行函数体语句; (4)函数调用结束给出返回值,程序回到调用前的 暂 停处继续执 行。 函数调用的过 程 微实例5.1中happyB()的被调用过 程 函数调调用的过过 程 函数调调用的过过 程 lambda函数 Python的有33个保留字,其中一个是lambda,该保留字用于定

5、义 一种特殊的函数匿名函数,又称lambda函数。 匿名函数并非没有名字,而是将函数名作为函数结果返回,如下 : = lambda : lambda函数与正常函数一样,等价于下面形式: def (): return lambda函数 简单 说,lambda函数用于定义简单 的、能够在一行 内表示的函数,实例如下。 f = lambda x, y : x + y type(f) f(10, 12) 22 函数的参数传传 递递 可选参数和可变数量参 数 在定义函数时,有些参数可以存在默认值。 默认默认值参数值参数必须出现在函数参数列表的最右端,且任何一 个默认值参数右边不能有非默认值参数。 def

6、 dup(str, times = 2): print(str*times) dup(knock) knockknock dup(knock,4) knockknockknockknock 可选参数和可变数量参 数 在函数定义时,可以设计可变数量参数,通过参数前增 加 星号(*)实现 def vfunc(a, *b): print(type(b) for n in b: a += n return a vfunc(1,2,3,4,5) 15 参数的位置和名称传 递 Python提供了按照形参名称输入实参的方式,调用如下 : result = func(x2=4, y2=5, z2=6, x1=

7、1, y1=2, z1=3) 由于调用函数时指定了参数名称,所以参数之间的顺序 可 以任意调整。 变量的返回 值 return语句用来退出函数并将程序返回到函数被调用的位 置继续执 行。 return语句同时可以将0个、1个或多个函数运算完的结 果 返回给函数被调用处的变量,例如。 def func(a, b): return a*b s = func(knock, 2) print(s) knockknock 变量的返回 值 函数可以没有return,此时函数并不返回值,如微实例 5.1的happy()函数。函数也可以用return返回多个值, 多 个值以元组类型保存,例如。 def fun

8、c(a, b): return b,a s = func(knock, 2) print(s, type(s) (2, knock) 函数对变量的作 用 一个程序中的变量包括两类:全局变变量和局部变变量。 全局变量指在函数之外定义的变量,一般没有缩进, 在 程序执行全过程有效。 局部变量指在函数内部使用的变量,仅在函数内部有 效 ,当函数退出时变量将不存在。 变量的返回 值 def func(a,b): c= a* b #c是局部变量,a和b作为函数参数也是局部变量 return c s = func(knock, 2) print(c) Traceback (most recent call

9、 last): File , line 1, in print(c) NameError: name c is not defined 这个例子说明,当函数执行完退出后,其内部变量将 被 释放。如果函数内部使用了全局变量呢? 变量的返回 值 n = 1#n是全局变变量 def func(a, b): n = b#这这个n是在函数内存中新生成的局部变变量,不是全局变变 量 return a*b s = func(knock, 2) print(s, n)#测测试试一下n值值是否改变变 knockknock 1 函数func()内部使用了变量n,并且将变量参数b赋值给 变 量n,为何全局变量n值没

10、有改变? 变量的返回 值 如果希望让func()函数将n当作全局变量,需要在变量n 使 用前显式声明该变量为全局变量,代码如下。 n = 1#n是全局变变量 def func(a, b): global n n = b#将局部变变量b赋值给赋值给 全局变变量 n return a*b s = func(knock, 2) print(s, n)#测试测试 一下n值值是否改变变 knockknock 2 变量的返回 值 如果此时的全局变量不是整数n,而是列表类型ls,会怎 么 样呢?理解如下代码。 ls = #ls是全局列表变变量 def func(a, b): ls.append(b)#将局部

11、变变量b增加到全局列表变变量ls 中 return a*b s = func(knock, 2) print(s, ls)#测试测试 一下ls值值是否改变变 knockknock 2 变量的返回 值 如果func()函数内部存在一个真实创 建过且名称为ls的列 表 ,则func()将操作该列表而不会修改全局变量,例子如下。 ls = #ls是全局列表变变量 def func(a, b): ls = #创创建了名称为为ls的局部列表变变量列 ls.append(b)#将局部变变量b增加到全局列表变变量ls 中 return a*b s = func(knock, 3) print(s, ls)#

12、测试测试 一下ls值值是否改变变 knockknock 变量的返回 值 Python函数对变量的作用遵守如下原则: 对于简单简单 数据类类型变变量无论是否与全局变量重名,仅在函数 内部创 建和使用,函数退出后变量被释放; 简单数据类型变量在用global保留字声明后,作为全局变量 ; 对于组组合数据类类型的全局变变量,如果在函数内部没有被真实 创 建的同名变量,则函数内部可直接使用并修改全局变量的 值; 如果函数内部真实创建了组合数据类型变量,无论是否有同 名 全局变量,函数仅对局部变量进行操作。 案例精选 例:编写函数模拟猜数游戏。系统随机产生一个数, 玩家最多可以猜5次,系统会根据玩家的猜

13、测进 行提 示,玩家则可以根据系统的提示对下一次的猜测进 行 适当调整。 案例精选 from random import randint def guess(maxValue=100, maxTimes=5): value = randint(1,maxValue) #随机生成一个整数 for i in range(maxTimes): prompt = Start to GUESS: if i=0 else Guess again: #使用异常处理结构,防止输入不是数字的情况 try: x = int(input(prompt) except: print(Must input an int

14、eger between 1 and , maxValue) else: if x = value: #猜对了 print(Congratulations!) break elif x value: print(Too big) else: print(Too little) else: #次数用完还没猜对,游戏结束,提示正确答案 print(Game over. FAIL.) print(The value is , value) 小练习: 使用turtle绘制阴阳图形 datetime库库的使用 datetime库概述 以不同格式显示日期和时间 是程序中最常用到的功能 。 Python提供

15、了一个处理时间的标准函数库datetime,它提 供 了一系列由简单 到复杂的时间处 理方法。datetime库可 以从 系统中获得时间,并以用户选择 的格式输出。 datetime库概述 datetime库以类的方式提供多种日期和时间表达方式: 类datetime.date:可以表示年、月、日等 类datetime.time:可以表示小时、分钟、秒、毫秒等 类datetime.datetime:日期和时间 表示的类,其很多功能覆盖 date和time类 类datetime.timedelta:时间间 隔有关的类 类datetime.tzinfo:与时区有关的信息表示类 datetime库解析

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号