环球新消息丨Python爬虫-第二章-6-函数

2022-12-28 10:23:38 来源:51CTO博客


(资料图片仅供参考)

Python匿名函数
# Demo Describe:匿名函数"""本章内容:    匿名函数 lambda        变量 = lambda 参数1,参数2,参数3.... : 返回值"""# start--------1,lambda----------------------def fn(a, b):    return a - brt1 = fn(50, 25)print(rt1)  # 25fn_lambda = lambda a, b: a - brt2 = fn_lambda(30, 18)print(rt2)  # 12# end--------1,lambda----------------------

Python装饰器
# Demo Describe:装饰器"""闭包内容回顾:    1.函数可以作为参数进行传递    2.函数可以作为返回值进行返回    3.函数可以作为变量进行赋值装饰器:    def warpper(fn):        def inner(*args,**kwargs):            do stuff            ret = fn(*args,**kwargs)            do stuff            return ret        return inner    本质上是一个闭包    作用:        不改变原有函数的情况下,在其前后增加新功能        比如给功能前后添加日志"""# start--------1,wrapper的简单使用----------------------"""功能    设置一个管家,使其帮助玩家自动实现开关"""def guanjia(game):    def inner():        print("开启!")        game()        print("关闭!")    return inner"""→@guanjia等同于     playLOL = guanjia(playLOL)    playLOL()"""@guanjiadef playLOL():    print("欢迎来到英雌联盟!")@guanjiadef playPSGame():    print("PS游戏开启!")# playLOL()# playPSGame()# end--------1,wrapper的简单使用----------------------# start--------2,wrapper的参数使用----------------------"""功能    设置一个管家,使其帮助玩家自动实现开关    动态传参        a. *args 接受所有位置参数并存入元组        b. **args 接受所有关键字参数并存入字典"""def guanjia(game):    def inner(*args, **kwargs):        print("开启!")        game(*args, **kwargs)        print("关闭!")    return inner# @guanjia# def playLOL(username,pwd):#     print("欢迎来到英雌联盟!"," 用户名:"+username," 密码:"+pwd)## @guanjia# def playPSGame(username,pwd,gamename):#     print("PS游戏开启!"," 用户名:"+username," 密码:"+pwd," 游戏名称:"+gamename)# playLOL("xiayong","moore123")# playPSGame("xiayong","moore123",gamename="刀剑神域")# end--------2,wrapper的参数使用----------------------# start--------3,wrapper的返回值使用----------------------"""功能    设置一个管家,使其帮助玩家自动实现开关    动态传参        a. *args 接受所有位置参数并存入元组        b. **args 接受所有关键字参数并存入字典"""def guanjia(game):    def inner(*args, **kwargs):        print("开启!")        result = game(*args, **kwargs)        print("关闭!")        return result    return inner@guanjiadef playLOL(username, pwd):    print("欢迎来到英雌联盟!", " 用户名:" + username, " 密码:" + pwd)    return "给你奖励一个皮肤"@guanjiadef playPSGame(username, pwd, gamename):    print("PS游戏开启!", " 用户名:" + username, " 密码:" + pwd, " 游戏名称:" + gamename)    return "给你奖励一件神器"# resultLOL = playLOL("xiayong","moore123")# print(resultLOL)# resultPSGame = playPSGame("xiayong","moore123",gamename="刀剑神域")# print(resultPSGame)# end--------3,wrapper的返回值使用----------------------# start--------4,一个函数携带多个wrapper----------------------"""功能    设置一个管家,使其帮助玩家自动实现开关    动态传参        a. *args 接受所有位置参数并存入元组        b. **args 接受所有关键字参数并存入字典"""def wrapper1(fn):    def inner(*args, **kwargs):        print("wrapper1 IN")        ret = fn(*args, **kwargs)        print("wrapper1 OUT")        return ret    return innerdef wrapper2(fn):    def inner(*args, **kwargs):        print("wrapper2 IN")        ret = fn(*args, **kwargs)        print("wrapper2 OUT")        return ret    return inner@wrapper1  # wrapper1.inner(#wrapper2.inner)@wrapper2  # wrapper2.innerdef playPSGame(username, pwd, gamename):    print("PS游戏开启!", " 用户名:" + username, " 密码:" + pwd, " 游戏名称:" + gamename)    return "给你奖励一件神器"# resultPSGame = playPSGame("xiayong","moore123",gamename="刀剑神域")# print(resultPSGame)"""wrapper1 INwrapper2 INPS游戏开启!  用户名:xiayong  密码:moore123  游戏名称:刀剑神域wrapper2 OUTwrapper1 OUT给你奖励一件神器"""# end--------4,一个函数携带多个wrapper----------------------# start--------5,demo----------------------"""功能    设置一个装饰器,在用户执行数据处理操作前,需要一次登录验证"""loginStatus = Falsedef login_verify(fn):    def inner(*args, **kwargs):        global loginStatus        if loginStatus == True:            print("登录状态中,请求正在处理!")        else:            while 1:                userName = input("请输入用户账号>>>")                userPwd = input("请输入密码>>>")                if userName == "admin" and userPwd == "123":                    loginStatus = True                    print("登录成功!正在处理请求!")                    break                else:                    print("录入用户信息错误!请重新登录!")        ret = fn(*args, **kwargs)        return ret    return inner@login_verifydef userAdd():    print("新增处理!!!")@login_verifydef userUpdate():    print("更新处理!!!")@login_verifydef userDelete():    print("删除处理!!!")userAdd()userUpdate()userDelete()""" 执行结果请输入用户账号>>>1请输入密码>>>1录入用户信息错误!请重新登录!请输入用户账号>>>admin请输入密码>>>123登录成功!正在处理请求!新增处理!!!登录状态中,请求正在处理!更新处理!!!登录状态中,请求正在处理!删除处理!!!"""# end--------4,demo----------------------

标签: 接受所有 刀剑神域 位置参数

上一篇:视讯!使用kubeadm安装k8s集群(v1.20.9)
下一篇:全球新资讯:#yyds干货盘点#ls命令按时间排序