python闭包

'''
    笔记
    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))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值