Python中的函数
一:函数是什么?
在生活中,汽车修理工修理汽车前,会准备好修理工具。如扳手、锤子等。这样,在修理汽车时,拿来用就行了就不用再临时的制造一个工具。
在这个例子中,我们是修理工,可以把函数看做准备好的修理工具,于是:
修理工===================》程序员
具备某一种功能的修理工具===》函数
与修理工具类似的,函数在使用前,一定要准备好(“先定义”),让后才能使用,而且函数可以重复的使用。
从上面可以总结到:
函数的定义:事先准备工具的过程
函数的调用:拿来就用
函数必须遵循的规则:必须事先定义,才能调用
二:函数的语法
def 函数名(参数1,参数2,参数3,...): '''注释''' 函数体 return 返回的值
定义函数的过程:申请一个地址空间,把函数体代码写入其中,然后把地址赋值给函数名
非常需要注意的一点是:函数在定义的阶段只检测语法,不执行代码
def foo(): print("from bar()" # 上面的代码在定义阶段报错 def foo(): print("from bar()") bar()
按照先定义,然后才能使用的原则,上述的代码会直接报错。但是我们需要注意到,目前代码的才到定义阶段,此阶段只检测语法,不执行代码。而函数的函数体语法正确,所以不会报错。
代码调用的误区
#定义阶段 def foo(): print("from bar()") bar() def bar(): print("from foo()") #调用阶段 foo()
使用函数编程的方法,在调用时要十分注意定义和调用的阶段区分,上述的代码将其划分为两部分:定义阶段、调用阶段.
定义阶段包括了两个函数foo和bar的定义,调用阶段是直接调用函数foo。
误区分析:
foo的函数体中有函数bar的调用。而在函数foo调用到bar时,似乎bar还未定义,根据函数先定义后调用的原则,程序会报错。
上述的分析看似有一定的道理,但实则是错误的认识,Python是解释性的编程语言,执行程序时,依照顺序从上到下依次执行。在把程序划分成定义阶段和调用阶段后我们可以看到:
首先是定义了函数foo,然后定义了函数bar。当定义阶段完成了之后,调用了函数foo,当foo的函数体执行到调用函数bar时,bar已经定义过了,自然是顺利执行。
三:定义函数的三种类型
无参函数:定义时无参,调用时也不需要参数。
有参函数:定义时有参,参数是函数体代码接收外部传入值的。
空函数:设计代码结构。
四:函数的返回值
参数是函数体吃进去的东西,返回值时函数输出的东西。
返回的三个方式:
没有return返回None;有return返回这个值本身;return可以以逗号分隔,返回多个值,以元组为形式给调用者。
需要注意的几点:
return返回的值没有类型限制。
return是函数结束的标志,函数体内可以有多个return,但是只能执行一个,执行一次就立刻结束,并把返回值作为本次调用的结果返回。