'''
笔记
1. 匿名函数
1.匿名函数只是表达式,为了代码写的更加简洁 lambda
2. 作用域
2.1 全局变量,一个局部变量
2.2 函数外部不能访问内部变量
2.3 函数内部可以访问全局变量
2.4 函数内部不声明不能修改外部的变量
2.5 声明修改全局变量: global
2.6 声明嵌套def修改全局变量: nonlocal
3. 闭包
4. 递归和回调函数
4.1 函数内部可以内部自己调用(会内存溢出)
4.2
'''
# 1. 匿名函数
# def func(a):
# return a > 5
# li1=[12,3,4,5,6,2343,543,43,523,423,234,4,5,]
# print(list(filter(func,li1)))
# 匿名函数以简洁方便为主
# a = list(filter(lambda b: b > 6, [12, 3, 4, 5, 6, 2343, 543, 43, 523, 423, 234, 4, 5, ]))
# print(a)
# 2.作用域
# 修改a alobal
# a=1
# def func():
# global a
# a=2+a
# print(a)
# func()
# 覆盖a
# a=1
# def func():
# a=2
# print(a)
# func()
# 嵌套def 修改nonlocal
# a = 1
#
#
# def func():
# a = 2
# def func1():
# a = 3
#
# def func2():
# nonlocal a
# a = 19 + a
# return a
#
# return func2()
# return func1()
#
#
# print(func())
# 3. 闭包 (嵌套函数,外层函数返回里层函数的引用(函数名,内存地址))
# 就是嵌套里边的函数不调用
# def func():
# a = 2
#
# def func1(b):
# return "hello" * a+b
#
# return func1
#
#
# print(func())
# print(func()("闭包测试"))
# 题外,装饰器(不改变任何代码,但是可以给函数增加功能)
# 4. 递归和回调函数
# 4.1 函数可以内部调用(会内存溢出)
# def func():
# print("测试")
# func()
#
#
# func()
# 4.2 回调函数
# def play():
# print("测试1")
#
#
# def func(a, b):
# if b:
# a()
# else:
# print("测试2")
# func(play,0)
# 内存溢出(乘积)
# def multiply(num):
# if num > 1:
# res = num*multiply(num-1)
# else:
# res = 1
# return res
#
#
# a = multiply(5)
# print(a)
# 两个变量位置互换
# a = 1
# b = 2
# b, a = a, b
# print(a, b)
# 1. 定义一个函数,传入一个字典和一个元组,将字典的值(key不变)和元组的值交换,返回交换后的字典和元祖
# 2. 斐波拉契列表12358
# 作业1
# def func(*args, **kwargs):
# return args, kwargs
# yuan, dian = func("fa", 18, 180, name=1, age=2, height=300)
# yuan, dian = list(dian.values()), dict(list(zip(dian.keys(), yuan)))
# print(yuan, dian)
# 作业2
n=int(input("请输入次数:"))
def func(a):
if a>=1:
return func(a-1)+func(a-2)
return -a
for i in range(1,n+1):
print(func(i))
python闭包
最新推荐文章于 2024-02-04 15:49:23 发布