(请结合《高教版python语言程序设计冲刺试卷(含上线题库)》)
**
考点四(1)函数的定义和使用
定义后的函数不能直接运行,需要经过“调用”才能运行
例子(/# 定义一个对整数n求阶乘的函数)
def fact(n):
s = 1
for i in range(1, n+1):
s *= i
return s
#函数调用规则
<函数名>(<实际赋值参数列表>)
例子:定义一个对整数n求阶乘的函数
def fact(n):
s = 1
for i in range(1, n+1):
s *= i
return s
#调用整数阶乘的函数
print(fact(100))
1.递归有1个或多个基例是不需要再次递归的
2.所有递归都要以一个基例结尾
注:递归每次调用都会引起新函数的开始;递归有本地值得副本,包括该值的参数构造递归函数需要基例。
基例不进行递归,否则递归就会无限循环执行python在900余次调用后,到达默认的“递归深度最大值”,终止调用。
阶乘递归函数:每次函数调用的相关n值在中途的递归链暂时存储,并在函数返回时使用。
def f(n):
if n = = 0:
return 1
else:
return n*f(n-1)
print (f(3))
考点四(2)函数的参数传递:可选参数、参数名称传递、函数的返回值
return用来结束函数并将程序返回到函数被调用的位置继续执行。
可出现在函数中的任意位置。
可同时将0个、1个或多个函数运算的结果返回给函数被调用处的变量。
函数可以没有return,此时函数不返回值。
普通参数:形参与实参一 一对应,否则需在代码调用是进行限制
默认值参数:指定形参的值,可有多个,但只能放在最右边
…如 def func(x,y,z = 1)
可变长参数:将一个元组传递到参数里面,定义方式:在参数前用“*”,可以不用限制参数的个数
…如 def func(*numbe)
关键词参数(必须置于参数后,不得重复提供实际参数,顺序无限制):传入后变成字典形式
如
>>>def func(**member)
print(member)
>>>func(class1 = "Tom",class2 = "Fony",)
{‘class1’ : 'Tom', 'class2' : 'Fony'}
考点四(3)变量的作用域:局部变量和全局变量
局部变量:仅在函数内部使用的变量,函数退出时变量将不再存在。
全局变量:函数外定义的变量,在程序执行全过程有效。全部变量在函数内部使用时,需要提前使用保留字global声明。
/#局部变量z
def multiply(x, y = 10):
z = x*y
return z
s = multiply(99, 2)
print(s)
198
print(z)
Traceback (most recent call last):
File “
print(z)
NameError: name ‘z’ is not defined
/#全局变量n
n = 2
def multiply(x, y = 10):
global n #声明全局变量
return xyn
s = multiply(99, 2)
print(s)
396
函数封装好处是代码复用。当更新函数功能时,所有被调用处的功能都被更新。减少函数间参数和返回值的数量。
模块化设计以功能块为基本单位,两个基本要求:1.紧耦合:尽可能合理划分功能块,功能块内部耦合紧密;模块或系统间关系紧密,存在较多或复杂的相互调用。紧耦合的缺点在于更新一个模块可能导致其它模块变化,复用较困难。2.松耦合:模块间关系尽可能简单,功能块之间耦合度低。一般基于消息或协议实现,系统间交互简单,代表了模块化,是总体设计原则。