主要写对于python函数的学习和理解。
python函数定义
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
!!!注意冒号需要强调,这与C的编程思想有区别
Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。
函数调用
与其他语言类似,python遵循函数先定义后调用的原则。
在调用之前必须先进行定义,然后才可以使用。
函数参数
位置参数
我们先写一个计算x2的函数:
def cal(x):
return x * x
对于cal(x)函数,参数x就是一个位置参数。
当我们调用cal函数时,必须传入有且仅有的一个参数x:
>>> cal(2)
4
现在,如果我们要计算高于2次方的函数怎么办?我们可以引入另一个参数,来指示为次方,如cal(x,n),其中,n代表几次方。如cal(x,4)代表计算x的4次方。
可如下定义
def cal(x, n):
s = 1
while n:
n = n - 1
s = s * x
return s
对于这个cal(x, n)函数,可以计算任意n次方:
>>> cal(2, 2)
4
>>> cal(3, 3)
27
修改后的cal(x, n)函数有两个参数:x和n,这两个参数都是位置参数,调用函数时,传入的两个值按照位置顺序依次赋给参数x和n。
默认参数
新的cal(x, n)函数定义没有问题,但是,我们会发现之前的函数cal(x)不能用了,因为如果代码中已经调用了cal(x),此时我们把函数修改为cal(x,n),原来的调用会报出错误,因为有一个参数在原来的函数中是不存在的。
这个时候,python提供了一个默认参数,我们可以把第二个参数n的默认值设定为2:
def cal(x, n=2):
s = 1
while n:
n = n - 1
s = s * x
return s
这样,当我们用原来的代码调用cal(2)时,相当于调用cal(2, 2):
>>> cal(2)
4
>>> cal(2, 2)
4
而对于n != 2的次方计算,我们必须传入正确的次方数,也就是n的值才能计算出来。
>>> cal(4,3)
64
这说明,python提供的默认参数可以简化我们队代码的维护及调用。
但是有几点需要注意:
一是必选参数在前,默认参数在后,否则Python的解释器会报错;
二是如何设置默认参数。
三是当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。