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

你可能感兴趣的:(Day10总结)