目录
一、函数的定义
Python的函数,是带有名字的方法块,在使用上和java的方法大同小异。
函数使用关键字def来定义,结构上包括函数名称、参数、函数体。函数体当中可以有返回值,至于是否需要返回值则由需求决定。
这里我们先看一个简单的代码示例,由定义函数和调用函数两部分构成。
二、函数的参数
不同于java方法对参数的严格要求(java要求调用方法时,参数类型、顺序都不能搞错,参数个数也不能少),Python对于参数的使用要求相对比较宽容,用法灵活,对于长期使用java的人来说,理解不成问题,但使用上可能会多少有些不适应,需要慢慢习惯。
话不多说,进入正题。
Python中函数的参数,也分实参和形参。定义函数时指定名称的参数,称为形参;调用函数时传递的参数值,称为实参。这个很好理解:下图中的user_name为形参,“Jack”为实参。
前边我们提到,Python的参数使用起来比较灵活,下面分别介绍一下:
1、位置实参
所谓位置实参,是指在调用函数时,每个实参都关联到函数的一个形参,且形参、实参的顺序一致。这种用法同java的参数用法是一致的。举个例子:
注意:使用位置实参,参数的顺序必须正确,否则结果将会出乎意料(即使程序没有报错 )。如果上面的例子中,我们将人名和宠物的参数顺序搞错了,那么输出的结果就可笑了:
2、关键字实参
关键字实参,是指在调用函数时,直接在实参中将名称和值关联起来,这样就可以不必考虑参数顺序,函数依然可以正确识别并使用参数。
我们把上面的例子用关键字实参改造一下:
可以看到,因为指定了实参的绑定对象,所以虽然实参顺序是反的,但输出的结果依然正确。
使用关键字实参时,务必准确指定与实参绑定的形参名。 如果形参名称搞错了,程序不会提示你,可能要等到程序报错了你才会发现问题,参见下图:
3、默认值
在编写函数时,可以给每个形参指定一个默认值。在调用函数时,如果给形参传递了实参,则采用指定的实参,否则将使用形参的默认值。因此,如果形参设置了默认值,那么在调用函数时可以省略实参的传递。
还是上面的例子,改成默认值形式:
这个例子中我们做了2次调用产生一个对比:第一次指定全部参数,第二次只传递了姓名,可以看出