2.2 闭包及 装饰器

#函数的使用
#灵活的if else语句
# a = 3 if False else 5
# print(a) # 5

#前面的表达式为真,才执行后面的表达式
# a = True and 3
# print(a)  # 3

#前面的表达式为假,后面的表达式不需要执行
# b = False and 5
# print(b)

#前面的表达式为真,后面的表达式就不需要执行了
# c = True or 3
# print(c)

#前面的表达式为假,才会执行后面的表达式
# d = False or 5
# print(d)

#类型判断
# if type(a) == int:
#     print('整数')
# 
# if type(a) == type(1):
#     print('整数')

#判断一个对象是否是一个类的实例
# print(isinstance(a, int))
# print(isinstance(a, float))


# def test():
#     pass
#判断是否可以调用
# print(callable(test))

#递归函数
#在函数内部调用函数本身的函数叫做递归函数
#组成:
#函数内部调用了自己
#终止条件(停止调用自身的条件)
#核心算法
#特点
#代码简洁
#可读性差
#瞬间占用内存较大,终止条件出错立即崩溃
#能不使用就不使用,在不得不使用的时候再使用

#匿名函数
#函数可以向普通变量一样进行赋值
# def test():
#     print('for test')
# 
# print(test.__name__)
# a = test()
#print(a.__name__)

#函数可以作为参数传递
# def show(func):
    #函数可以作为参数传递
    # show(test)

#函数作为参数传递时,若函数只需要一次,没有必要定义函数,
#可以通过匿名函数解决
#lambda: 参数列表: 表达式
#说明
#可以有多个参数,多个之间使用逗号隔开
#表达式就是返回值,不需要使用return关键字
# lt = [
#     {'name': 'ergou', 'age': 18, 'height': '180'},
#     {'name': 'dagou', 'age': 20, 'height': '170'},
#     {'name': 'dahua', 'age': 19, 'height': '160'},
#     {'name': 'cuihua', 'age': 21, 'height': '165'},
# ]
#def key(d):
    #return d['age']
#lt.sort(key = key)
lt.sort(key = lambda d : d['height'])
for i in lt:
    print(i)

#外部函数中定义一个内部函数
#内部函数中使用外部函数的局部变量
#外部函数将内部函数作为返回值
#此时的内部函数就叫闭包
#
# def wai(n):
#     def nei():
#         #内部函数中使用外部函数的局部变量
#         return n * n
#     return nei()
#
# f1 = wai(10)
# f2 = wai(5)
#
# print(f1())
# print(f2())
# 
# def zhuangshiqi(func):
#     def wrapper():
#         print('前面的装饰')
#         func()
#         print('后面的装饰')
#     return wrapper
# 
# def test():
#     print('for test')
# 
# t = zhuangshiqi(test)
# t()
# 
# @zhuangshiqi
# def hello():
#     print('how are you?')
# hello()

猜你喜欢

转载自blog.csdn.net/XC_LMH/article/details/81195241