Day10总结
匿名函数
普通函数:
def 函数名(参数列表):
函数体
匿名函数:
函数名 = lambda:参数列表:返回值
函数名:变量名
lambda:关键字
参数列表:参数名1,参数名2……
返回值:相当于一个只有return语句的函数体
匿名函数的调用也和普通函数一样,函数名(实参列表),也支持位置参数,关键字参数,参数设定默认值,不定长参数
'''
写一个匿名函数,求两个数的和
sum1 = lambda num1,num2:num1+num2
匿名函数的调用和普通函数一样
print(sum1(10,20))
练习:求1+2+...+n
my_sum = lambda n:sum(range(n + 1))
print(my_sum(100))
变量的作用域
1、变量的作用域:变量声明后,能够使用的范围
2、全局变量和局部变量:
全局变量:声明在函数和类的外面的变量都是全局变量
作用域:从声明开始到整个py文件结束,任何地方都可以使用
3、局部变量:声明在函数和类中的变量
作用域:从声明开始到函数或类结束
'''
'''
global关键字
在函数中说明一个变量是全局变量
注意:只能用在函数中使用
'''
name = 'aaa'
def func1():
global name#说明当前变量是全局变量
name = 'aaa'
print(name)
func1()
'''
nolocal关键字
在局部的局部变量中修改局部变量的值
'''
def fun2():
abc = 100
def fun3():
nonlocal abc
abc = 200
print('fun3',abc)
fun3()
print('fun2',abc)
函数作为变量
声明函数就是声明一个类型是function的变量,函数名是指就是变量名
'''
'''
1、变量可以给其他变量赋值
2、函数作为列表的元素
3、将函数作为参数
函数的调用
函数可以有多个返回值
求多个数的和与平均值
def my_sum(*nums):
sum1 = sum(nums)
average = sum1/len(nums)
return sum1,average #同时返回和、平均值
2、函数的调用过程是一个压栈的过程
每次调用函数的时候,系统都会在内存中(栈)开辟空间来存储函数执行过程中产生的数据(函数声明的变量)
当函数调用完成后,这块内存会自动销毁
递归函数
1、递归函数:在函数体中调用函数本身
循环能做得递归都能做,但实际上能用循环解决的不用递归
2、怎么写递归函数
a.确定临界值(循环结束条件),让函数结束
b.找关系,假设函数的功能已经实现,找f(n)和f(n-1)的关系
c.根据关系,用f(n-1)实现f(n)的功能
'''
写一个递归函数,实现1+2+3+...+n
def my_sum(n):
#找临界值
if n == 1:
return 1
# 找关系
# my_sum(n) = 1+2+3+...+n
# my_sum(n-1) = 1 + 2 + 3 + ... + n-1
# my_sum(n) = my_sum(n-1)+n
# 用f(n - 1)实现f(n)的功能
return my_sum(n-1)+n