变量的作用域:①根据代码访问该变量的区域;
②根据变量的有效范围可分为:局部变量和全局变量
局部变量:在函数内定义并使用的变量,只有在函数内部有效,局部变量使用global声明,这个变量就变成全局变量;
全局变量:函数体外定义的变量,可作用于函数内外。
代码如下:
def fun(a,b):
c = a+b #c就是为局部变量,因为c是在函数体内进行定义的变量,a,b为函数的形参,作用范围也是函数内部,相当于局部变量
print(c)
#print(c) 因为c超出了起作用的范围
name = '张三' #name的作用范围为函数内部和外部都可以使用--->称为全局变量
print(name)
def fun2():
print(name)
#调用函数
fun2()
def fun3():
global age #函数内部定义的变量,局部变量,局部变量使用global声明,这个变量实际上就是全局变量
age = 20
print(age)
fun3()
print(age)
运行结果:
张三
张三
20
20
Process finished with exit code 0
什么是递归函数?
如果在一个函数的函数体内调用了该函数本身,这个函数就称为递归函数。
递归函数组成部分:
递归调用与递归终止条件
递归的调用过程:
①每递归调用一次函数,都会在栈内存分配一个栈帧;
②每执行完一次函数,都会释放相应的空间。
递归的优缺:
缺点:占用内存多,效率低下
优点:思路和代码简单
练习:计算阶乘
代码如下:
def fac(n):
if n == 1:
return 1
else:
return n * fac(n - 1)
n = int(input('请输入n的数值:'))
a = fac(n)
print('%d的阶乘为%d'%(n,a))
#print('这个数阶乘为:',fac(n))
运行结果:
请输入n的数值:10
10的阶乘为3628800
Process finished with exit code 0
练习:斐波那契数列
代码如下:
def fib(n):
if n == 1:
return 1
elif n == 2:
return 1
else:
return fib(n-1)+fib(n-2)
n = int(input('请输入你要求的数:'))
print('第%d位的斐波那契数列为%d'%(n,fib(n)))
#输出这个数列前n-1项的数字
for i in range(1,n):
print(fib(i),end='\t')
运行结果:
请输入你要求的数:6
第6位的斐波那契数列为8
1 1 2 3 5
Process finished with exit code 0