2.23 函数
Last updated
Was this helpful?
Last updated
Was this helpful?
函数是组织好的、可重复使用的、用来实现单一或者相关联功能的代码段。
函数能提高应用的模块性和代码的重复利用率。
Python提供了许多内建函数,比如print()
开发者也可以自己创建函数,这被叫做用户自定义函数。
函数定义语法如下:
函数通过“def”关键字进行声明,后接函数标识符名称和圆括号“()”。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
“函数_文档字符串”是一个可选项,起到一个帮助文档的作用。
return[表达式]结束函数,选择性地返回一个值给调用方。
不带表达式的return相当于返回None。
下面我们定义了一个求阶乘的函数:
在这里我们通过def这个关键词进行声明,后面是函数的名称fact,括号中的n是参数(不需要指定数据类型),然后是一个冒号“:”,下面是函数体,result是函数内部的局部变量,初始值为1,然后是一个for循环,由于range的上限是取不到的,所以1到n的阶乘要写成range(1,n+1),最后返回的result就是n阶乘的值。
定义好了之后,我们调用这个函数去求5的阶乘,就可以写成“fact(5)”,得到的结果是120。我们也可以把括号内的数字改成其他数字去计算其他数字的阶乘。
下面我们来看一个更加复杂的例子:
这里我们有一个item变量来保存阶乘的值,由于我们刚刚已经定义了一个求阶乘的函数,所以在这里就可以直接调用。
之后就是一个格式化输出。因为我们需要每两个换一行,所以在最后我们做了一个判断,如果这个i取余2等于1的话,我们就换行,从而实现了这个程序的要求。
虽然它实现的是一个相对复杂的功能,但是代码非常的清晰简短,这是因为我们在之前已经定义了fact函数。如果有错误需要修改,也会相对比较方便。
可选参数以集合的方式出现在函数声明中并紧跟着必选参数,可选参数可以在函数声明中被赋予一个默认值。已命名的参数需要赋值。
函数第一行语句可以选择性地使用文档字符串——用于存放函数说明。
函数可以返回一个元组(使用元组拆包可以有效返回多个值)。
下面来看一个例子:
我们定义了一个fun_example函数,它有三个参数:第一个参数是一个列表型参数,第二、三个参数都赋了初值,是可选参数。这个函数的作用是在listp函数中添加一项“A new item”,intp的值加一。最后返回这三个参数。
接下来我们调用了这个函数。我们先定义了第一个参数和第二个参数的值,然后它们作为参数代入到函数中,由于第三个参数没有写,所以在定义中的初始值就是它的值:
那么我们如何对这个返回的元组进行拆包呢?
通过下图的方式我们就可以做到拆包啦: