函数和代码的复用

168 阅读3分钟

函数的基本使用

1.函数的定义

函数是一段具有特定功能的、可重用的语句组,用函数名来表示并通过函数名进行功能调用。

函数能够完成特定功能,与黑盒类似,对函数的实用不需要了解函数内部实现原理,只要了解函数的的输入和输出方式即可。所以说,函数是一种功能抽象。

使用函数有两个目的:降低编程难度和代码重用。所以在编程中的复杂功能可以使用函数实现

函数的调用过程

程序调用一个函数需执行一下4个步骤:

(1)调用程序在调用处暂停执行。

(2)在调用时将实参复制给函数的形参。

(3)执行函数体语句。

(4)函数调用结束给出返回值,程序回到调用前的暂停处继续执行。

函数的参数传递

1.可选参数和可变数量参数、

可选参数

在定义函数时,如果有些参数存在默认值,即部分函数不一定需要调用程序输入,可以在定义函数时直接为这些参数指定默认值。当函数被调用时,如果没有传入对应的参数值,则使用函数定义时的默认值替代。

2.可变量参数

在函数定义时,也可以设计可变量参数,通过在参数前增加星号(*)实现。带有星号的可变参数只能出现在参数列表的最后。调用时,这些参数被当作元组类型传递到函数中

函数对变量的作用

一个程序中的变量包括两类:全局变量和局部变量。全局变量指在函数之外定义的变量,一般没有缩进,在程序执行全过程有效。局部变量指在函数内部使用的变量,仅在函数内部有效,当函数退出时变量将不存在。

Python函数对变量的作用遵守如下原则:

(1)简单数据类型变量无论是否与全局变量重名,仅在函数内部创建和使用,函数退出后变量被释放,如有全局同名变量,其值不变。

(2)简单数据类型变量在用 global 保留字声明后,作为全局变量使用,函数退出后该变量保留且值被函数改变。

(3)对于组合数据类型的全局变量,如果在函数内部没有被真实创建的同名变量,则函数内部可以使用并修改全局变量的值。

(4)如果函数内部真实创建了组合数据类型变量,无论是否有同名全局变量,函数仅对局部变量进行操作,函数退出后局部变量被释放,全局变量值不变。

函数的递归

递归的定义

函数作为一种代码封装,可以被其他程序调用,当然,也可以被函数内部代码调用。这种函数定义中调用函数自身的方式称为递归。

递归的两个关键特征:

(1)存在一个或多个基例(问题的最小规模下的解),基例不需要再次递归,它是确定的表达式。

(2)所有递归要以一个或多个基例结尾。