環球新消息丨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命令按時間排序