python自动化测试之函数(匿名函数lambda和三目运算等(高级用法))

'''
匿名函数:
lambda
'''
def Add(a,b):
    print(a+b)
Add(2,3)

per = lambda a,b:a+b
print(per(2,3))
'''
三目运算
'''
a = 20
print("True") if a >10 else print("False")
'''
匿名函数+三目运算
'''
login = lambda username,password:print('登录成功') if username == 'shenqiang' and password =='123' else print('登录失败')

login('shenqiang','123')
'''
匿名函数,字典的排序
'''
data = lambda **kwargs:dict(sorted(kwargs.items(),key=lambda item:item[0]))
print(data(name='shenqiang',age = 28))
'''函数的内部函数map(),对列表内的同样元素做同样的事情'''
list1 = [1,23,4,5,6]

print(list(map(lambda x:x+100,list1)))
'''函数的内部函数filter(),对列表内的元素进行过滤'''
list2 = [1,2,3,4,5,6]
print(list(filter(lambda a:a>1,list2)))

装饰器

'''
封闭:对已经实现功能的代码尽量不去修改
开放:对现有功能的代码进行拓展
需求:在调用f or f1 先打印getInfo,再打印f
'''
def getInfo(func):
    def info():
        print("无涯自动化测试")
        func()
    return info

@getInfo
def f():
    print("网易云平台")

@getInfo
def f1():
    print("51CTO平台")

f()

'''
步骤:
1.当我们执行getInfo时候,把被装饰的f当作参数传递
2.getInfo函数的返回值会重新赋值
3.一旦结合了装饰器,调用f函数的时候,实际调用了info内部分函数,原来的f1被覆盖
4。被装饰的f重新赋值给装饰器的info
'''
def login(func):
    def inner(Token):
        if Token == "01293":
            return func(Token)
        else:
            print("登录失败")
    return inner

@login
def profile(Token):
    print("登录成功")

profile("01293")

猜你喜欢

转载自www.cnblogs.com/shen-qiang/p/11795888.html