转自白月黑羽Python3教程之函数:http://www.python3.vip/doc/tutorial/python/0005/python
人类语言里面,咱们不只会给人和物起名字, 好比 小张, 足球, iphone面试
有时候,咱们还要给 一件事情,一串动做起名字,指代 某个流程。编程
好比:咱们公司的面试流程是iphone
把求职者带到3号会议室 请求职者 完成答卷 让测试经理来面试 求职者 让技术总监面试 求职者
咱们会把上面这 一连串的事情,起名叫 面试流程。函数
面试流程就表明了这一串动做。学习
之后,咱们想告诉 HR 给谁面试的时候,只要说,走面试流程 ,就好了。测试
不须要说, HR ,请你作以下的事情对象
把求职者带到3号会议室 请求职者 完成答卷 让测试经理来面试 求职者 让技术总监面试 求职者
大家会这么说吗?blog
不会,由于这样太麻烦了。我给它起名字面试流程,只要走 面试流程,HR 天然知道是什么意思。这样就方便多了。教程
一样的道理,在编程上,若是我要屡次输出面试的流程,就像下面的代码,
print("把求职者带到3号会议室") print("请求职者 完成答卷") print("让测试经理来面试 求职者") print("让技术总监面试 求职者")
每次都所有写一遍太烦了, 就能够定义一个名字来表明要执行这四条语句
定义一个名字 对应多个语句操做, 称之为定义函数
因此:定义函数 就好像是给 一段代码 起了个名字
Python中,咱们是这样定义函数的:
def interview(): print("把求职者带到3号会议室") print("请求职者 完成答卷") print("让测试经理来面试 求职者") print("让技术总监面试 求职者")
def 是关键字 表示定义一个函数,后面是函数的名字,紧接着后面须要一个括号 ,这个括号中间,根据须要还能够有n个参数,这里咱们先不讲它。最后是一个冒号,下面的缩进的代码表示这个函数名字表明的具体动做是什么,称之为函数体。
函数体的代码是须要缩进的。咱们建议缩进四个空格。
这样定义好了之后,后面的代码要指代这个面试的流程,只须要写名字 interview 就好了。 好比:
print(interview)
运行一下,发现会输出内容以下
<function interview at 0x05292468>
表示这个 interview 是 一个函数类型的对象。
特别要注意的是,解释器执行代码的时候,执行到定义函数的代码,并不会执行函数体里面的代码。 要执行函数体里面的代码,必须调用函数。
Python中调用函数的语句,就是在 函数名后面加上括号。好比,要执行 interview 这个名字表明的动做,就在后面加上括号 interview()
以下:
interview() print('后续代码')
interview() 就叫 调用函数 interview ,有时也叫作 执行函数 interview。
要注意的是,当解释器执行完被调用函数内部的代码后,还会返回到调用它的代码处,继续执行后面的代码。上面的例子里面,就是在 执行完 interview 对应的函数内部代码后, 会返回调用处,进行执行后面的 这条语句
print('后续代码')
你们仔细看看咱们的代码, 里面除了有 interview 这个函数,还有什么函数? 对了print
其实,咱们这里 print 这个名字 也是一个函数的名字, 表示一个动做就是把里面的对象 显示到屏幕上,这个动做实现的具体代码在哪里?
python语言的开发者 知道 这是咱们经常使用的操做, 因此在python解释器内部已经帮咱们实现好了 这样一个函数, 称之为内置函数。
关注我,私信我【Python】,还能够免费获取一套精心整理的电子书籍哟!
能够点击文章末尾【了解更多】,或者百度搜索【白月黑羽】,经过在线教程一块儿来学Python
函数参数
这个print函数调用的时候,有个和咱们上面定义的 interview 有明显的不一样,你们有没有发现?看看
interview()
和
print("把求职者带到3号会议室")
区别在哪里? 对了,括号里面有内容。函数调用括号里面的内容 称之为函数的 参数。有的函数要完成功能,须要告诉它一些信息。好比print函数,若是你不告诉它要打印的内容是什么,它怎么能打印信息到屏幕上呢?
参数的做用 就是: 提供 函数完成功能 所必须的信息
有参数的函数像这样
def func(para1,para2): ...
函数的参数都是放在函数定义的括号里面的。好比上面示例代码中的 para1,para2
参数其实也是一个变量,因此他们的命名规则和变量的命名规则同样。参数能够没有,能够是一个,也能够是多个。参数之间用逗号隔开。
调用有参数的函数时,须要传入对应个数的参数。是一个参数,就传入一个,两个就是传入两个,咱们上面interview的例子里面,若是咱们要加上显示出面试者的名字,就能够这样
def interview(interviewee): print("求职者是 " + interviewee) print("把求职者带到3号会议室") print("请求职者 完成答卷") print("让测试经理来面试 求职者") print("让技术总监面试 求职者") interview('王小五')
咱们在定义的时候,并不知道未来调用的时候是谁来面试。可是没有关系。能够做为参数,定义在这里。面试者来了,咱们在调用函数的时候,会将面试者的名字做为参数传递过来。再执行
interview('王小五')
的时候, 解释器就会到 函数 interview 准备去执行里面的代码,而且在执行函数代码前,会将参数变量interviewee 赋值为 '王小五'
函数的缺省参数
假设,咱们要实现一个函数,统计学生考试超过指定分数的人数。
def overScoreStudents(studentScoreList, score): count = 0 # 下面的代码用到了循环和判断,后面章节会学习到 for ss in studentScoreList: if ss >= score: count += 1 return count
在调用这个函数的时候,大部分时候 都是统计超过及格分数线60的人数。像这样
overScoreStudents(ssList,60)
因此,咱们调用该函数的时候,第二个参数一般都是填写 60 。这样显得就有些麻烦。这时候,能够在定义函数的时候,给它加上缺省值,像下面这样:
def overScoreStudents(studentScoreList, score=60): ...
这样,在在调用这个函数的时候,若是score参数仍是传入60 就能够不用写了,像这样
overScoreStudents(ssList)
解释器发现该函数参数score有缺省值,就会自动帮咱们传入缺省值60 给 参数score。固然若是咱们调用的时候传入了参数,好比像下面这样,score参数就会将 70 传给参数score。
overScoreStudents(ssList, 70)