函数
1.函数的概述
为什么会出现函数? 因为代码的复用性太差,所以需要用到函数。
函数是对功能(代码)的封装。
函数的作用:增强代码的复用性 提高程序的效率
要求:求圆的面积?
S = π*r**2
求半径为10的面积? 3.14*10**2
求半径为9的面积? 3.14*9**2
工程效率低
2.函数的分类
内置函数 和 自定义函数
内置函数:系统提供的现成的函数 直接可以使用
例如;print() input() int() help()…
自定义函数:
函数的定义格式:
def 函数名(参数1,参数2...):
函数的功能实现
return 功能的结果
def --- 声明的关键字
函数名 --- 功能的名称 方便之后通过名称进行调用
命名规范:符合标识符规范
函数名英文字符都是小写的 每个单词之间使用下划线隔开
circle——area
起名字的时候注意(见名知意)
小括号的参数 --- 参数的定义方式和变量一样 形参
形参:作用于储存函数功能中未知项的值
实参:为形参赋值的数据
return --- 作用:结束函数 并将功能的结果返回给调用者
如果该功能的实现没有必要返回结果 return可以省略 或者 retrun None
return 忽略的情况下 直到函数结束
3.函数实战
1.封装一个功能
根据两个明确来进行定义:
a)明确是否有未知项参与函数的运算 – 参数
b)明确是否需要返回结果 — return
封装一个计算圆的面积?
未知项? 1 个 r
返回结果: return
4.函数的调用
格式:
函数名(实参1,实参2…)
如果函数的功能有结果返回
可以设置变量来接收返回的结果
value = 函数名(实参1,实参2…)
注意:传入的实参要与声明的形参个数一致
当记不住形参的顺序时,为了避免传值顺序错误 在传值的时候可以通过形参名字进行赋值。
5.变量的作用域
作用域:变量的使用范围
变量分为(局部变量)和(全局变量)
局部变量:声明在函数内的变量 作用范围仅限于在函数中有意义 出来函数就没有意义
全局变量:作用范围在整个.py文件
关键字:global 标注为全局变量
6.默认参数
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
def defaulet(x,y=2):
return x*y
声明一个形参 并给他赋予了初始值
当我们调用这个函数时,如果没有给参数进行赋值 这个具体默认值得数据就会参与函数的运算
求x的y次方?
7.递归
算法:前辈们总结某种问题的经验
递归算法:在函数内部调用函数自己 这种结构称之为递归
例子:斐波拉契数:一堆兔子
第一个月 有一对兔子 从第三个月开始 每个月都生一对小兔子 小兔子到了第三个月开始 每个月也可以生一对小兔子 假设兔子不死 问n个月后总有多少只兔子?
5 个月有多少只兔子?
注意;
1.递归一定要有出口【已知项】
2.嵌套的层次最好不要太深 否则容易出现栈的溢出
def nb(x):
if x == 1:
return 1
elif x == 2:
return 2
else:
return nb(x - 1) + nb(x - 2)
make= int(input('请输入一个数字'))
a = 1
while a <= make:
print(nb(a), '', end=' ')
a+=1