递归:就是函数内部进行再次调用函数本身进行循环,循环次数有限制996次
def recoder(n):
print(f"这是第{n}层录屏")
if n == 1:
return None # 结束递归,因为不结束就会无限递归
else:
n -= 1 # 每递归一次,把层数-1
recoder(n) # 第n层递归
if __name__ == '__main__':
recoder(10)
回调函数;把函数作为其他函数的参数进行调用
def get_min(a, b, func):
# func是回调函数的引用
result = a if a < b else b
func(a, b, result) # 回调
# 回调函数一
def call_back_print_en(a, b, _min):
print(f"compare {a} and {b},min={_min}")
# 回调函数二
def call_back_print_zh(a, b, _min):
print(f"{a} 和 {b}比较,{_min}最小")
if __name__ == '__main__':
get_min(1, 2, call_back_print_zh)
闭包:就是把一个函数放在另外一个函数里面并进行返回,某个函数,当做内存函数
使用闭包( 在函数里面再定义一个函数,把局部变量暴露给外部 )
def outer_function(n):
num = n
def inner_function():
# nonlocal 一般用在嵌套函数中
nonlocal num # global(全局) local(局部) nonlocal(不在本局部,但不是全局)
print("hello")
num -= 1
# 不加括号,返回inner_function()函数的函数名(即引用)
return inner_function
if __name__ == '__main__':
my_func = outer_function(3)
my_func()