函数2

传递列表、字典、集合产生的现象
d = {"name":"Alex","age":26,"hobbie":"大保健"}
l = ["Rebeeca","Katrina","Rachel"]
def change_data(info,girls):
info["hobbie"] = "学习"
girls.append("XiaoYun")
change_data(d,l)
print(d,l)
函数的嵌套&匿名&高阶函数
嵌套函数:
name = "小猿圈"
def change():
name = "小猿圈,自学编程"
def change2():
# global name 如果声明了这句,下面的name改的是最外层的全局变层
name = "小猿圈,自学编程不要钱" #这句注释掉的话,下面name打印的是哪个值?
print("第3层打印", name)
change2() # 调用内层函数
print("第2层打印", name)
change()
print("最外层打印", name)
匿名函数:
#这段代码
def calc(x,y):
return x**y
print(calc(2,5))
#换成匿名函数
calc = lambda x,y:x**y
print(calc(2,5))
res = map(lambda x:x**2 if x > 10 else x**3,[1,5,7,4,8,12])
for i in res:
print(i)
高阶函数:
1.只需满足以下任意一个条件,即是高阶函数

2.接受一个或多个函数作为输入

3.return 返回另外一个函数
def get_abs(n):
return int(str(n).strip('-'))
def add(x,y,f):
return f(x) + f(y)
print(add(5,-10,get_abs))
函数的递归:
1.必须有一个明确的结束条件

2.每次进入更深一层递归时,问题规模相比上次递归都应有所减少

3.递归效率不高,递归层次过多会导致栈溢出
(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)
n = 100
while n > 0:
n = int(n/2)
print(n)

def calc(n):
print(n)
n = int(n/2)
if n > 0:
calc(n)
print(n)
calc(100)

 

posted @ 2020-06-22 19:05  烂泥扶不上墙  阅读(134)  评论(0编辑  收藏  举报