函数,可读性强,复用性强,定义之后可以在任意地方调用,他执行某种行为,并且返回一个值
#函数实现斐波那契数列 enternum = int(input('输入想生成的数量\n')) def test(num):#定义函数,并且带形参'num' result = [0,1] #定义初始的列表 for i in range(num-2):#初始列表有2个值所以需要去掉,循环的次数就是想要生成的个数 result.append(result[-2]+result[-1])#把列表中前两个数的值之和追加到后面 return result#返回列表 c = test(enternum)#定义C接受函数的返回值 print(c)#打印出函数的返回值 输出: 输入想生成的数量 10 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
局部变量
当函数定义生命变量的时候,函数内所生命的变理只在其函数内有效,与函数外具有相同名称的其他变量没有任何关系
#局部变量 a = 1 def func(a): print('我是全局的',a) a = 2 print('我是函数内的',a) func(a) print('我是全局的,函数内的对我不生效',a) 输出 我是全局的 1 我是函数内的 2 我是全局的,函数内的对我不生效 1
global 语句
如果想把一个变量声名为 全局的,则可以使用global语句
#全局变量 a = 1 def func(): global a print('我是全局的',a) a =2 print('在函数内我变成了',a) func() print('出了函数我变成了',a) 输出: 我是全局的 1 在函数内我变成了 2 出了函数我变成了 2
默认参数
对于一些参数,我们希望它的一些参数是可选的,如果用户不想要为这些参数提供值的话,这些参数就使用默认值
#默认参数 def func(a,b=1):#b是可选参数 print(a*b) c1 = func(3) c2 = func(4,2) 输出: 3 8
函数之间的调用
#函数与函数的调用 money = 500 def test(consume):#入参为500的时候 该函数返回是0,即test(money) return money - consume def test1(money):#调用了test(consume)函数,返回值是0+500 return test(money) + money money1 = test1(money)#调用test1函数,所以返回了500 print(money1) 输出: 500
关键参数
如果某个函数有许多参数,而我们只想指定其中的一部分,那么可以使用名字(关键字)而不是位置来给函数指定实参。----这被称作 关键参数
def func(a,b=5,c=10): print ('a is',a, 'and b is',b,'and c is',c) func(3,7) func(24,c=32) func(c=23,a=14) 输出: a is 3 and b is 7 and c is 10 a is 24 and b is 5 and c is 32 a is 14 and b is 5 and c is 23