函数
什么是函数? 基本思想 一给出语句序列,并给这个序列一个名字 用来组织语句,便于掌控程序的开发 一功能切割,模块化,结构化 一次定义多次使用 函数是一种程序构件,是构成大程序的小程序。 一先定义后调用 通过函数名调用之 调用时传递参量 调用执行的是函数体(语句序列) 调用产生返回值 2
2
什么是函数? 我们已经熟悉的函数: -自己编的函数,如常用的main() -Python内建函数,如abs()(语言的一部分) -Python标准库函数,如math.sgrt()和string.split() - 对象的方法,如win.close()和p.draw() User defined (def) Python built-in functions Library (import) 3
3 Python built-in functions Library (import) User defined (def)
为什么需要函数? 编程更容易把握 ■复杂程序分解成较小部件、子程序 ■代码可重用 一提高开发效率 一更易维护 -如:库 4
4
为什么需要函数? ■代码更简洁、美观 减少重复编码 程序更易理解 一读程序是很困难的 一结构、注解有助于理解程序 5
5
编程实例:生日歌 ■用函数减少重复代码 def main() 重复代码的坏处: print "Happy birthday to you!" 1.费时费力 print "Happy birthday to you!" print "Happy birthday,dear Fred." 2.代码维护的一 print "Happy birthday to you!" 致性(例如:单 词拼写错误) def happy () print "Happy birthday to you!" def singFred(): happy ( happy ( print "Happy birthday,dear Fred." happy (
重复代码的坏处: 1. 费时费力 2.代码维护的一 致性(例如:单 词拼写错误)
编程实例生日歌(续) ■用参量增强函数的通用性(代码可重用) def singLucy () def main(): singFred() singLucy ( ↓ def sing(person): happy ( happy ( print "Happy birthday,dear",person +. happy ( def main(): sing (Fred") sing (Lucy") sing (Elmer")
实例分析:futval.3.py futval,2.py两处画柱子的代码是类似的 一循环外的初始柱子 一循环内的每年的柱子 解决方法 把共同性抽取出来,可变的作为参数 8
8
实例分析:futval.3.py 解决方法 def drawBar (window,year,height): bar Rectangle(Point(year,0),Point(year+1,height)) bar.setFill("green") bar.setwidth(2) bar.draw (window) 初始:drawBar(win,0,2000) 每年:drawBar(win,Year,height) 完整程序futval:3.py(简洁,易理解,便于维护) 9
9
函数与参量 考虑函数定义 def drawBar(window,year,height) - 参量一般代表可变的部分,如year和neight window并不变,为何作为参量? 变量作用域(scope):即可以引用该变量的 区域