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