Python練習4 裝飾器

2021-09-09 09:00:21 字數 1853 閱讀 5724

#1、編寫裝飾器,為函式加上認證的功能
def decorator(func):

def inner(*args, **kwargs):

name = input('使用者名稱:').strip()

password = input('密碼:')

if name == 'noiccy' and password == '111111':

print('認證通過!')

func()

else:

print('認證失敗!')

return inner

@decorator

def show():

print('welcome to python!')

show()

#2、編寫裝飾器,在每次執行被裝飾函式之前讓使用者輸入使用者名稱,密碼,給使用者三次機會,登入成功之後,才能訪問該函式.
def decorator(func):

def inner(*args, **kwargs):

num = 3

while num:

name = input('使用者名稱:').strip()

password = input('密碼:')

if name == 'noiccy' and password == '111111':

print('登入成功!')

func()

break

else:

if num != 1:

print('使用者名稱或密碼錯誤,請重新輸入(還有{}次機會)!'.format(num-1))

num -= 1

if num == 0:

print('登入失敗!')

return inner

@decorator

def show():

print('welcome to python!')

show()

#3、隨便寫乙個單層裝飾器和多層裝飾器,並將程式的執行過程用文字寫下來
def decorator(func):

def inner(*args, **kwargs):

print('----')

func(*args, **kwargs)

return inner

@decorator

def show():

print('哈哈')

show()

# @decorator等價於show = decorator(show),將show函式傳入decorator函式,返回inner函式,並將inner函式賦值給引數show,show = inner,

# 然後呼叫show函式,其實是呼叫decorator函式中的inner函式,執行print('----'), 然後呼叫func函式,即原來宣告的show函式

def decorator2(char):

def decorator1(func):

def inner(*args, **kwargs):

print(char*4)

func(*args, **kwargs)

return inner

return decorator1

@decorator2('*')

def show1():

print('哈哈')

show1()

#4、函式練習,檢查獲取傳入列表或元組物件的所有奇數字索引對應的元素,並將其作為新列表返回給呼叫者。

python 裝飾器練習

import time import functools def add log fun functools.wraps fun start time time.time res fun args,kwargs end time time.time fun.name end time start t...

Python裝飾器練習

看廖下廖大的裝飾器的文件 寫了練習 設計乙個decorator,它可作用於任何函式上,並列印該函式的執行時間 coding utf 8 import time,functools def metric fn time1 time.time ret fn args,kw time2 time.time...

python裝飾器練習

判斷是否是root使用者 def hahaha fc def woshinima args if args 0 root args是列表,儘管只有乙個元素,但是必須是 0 return fc args print error return woshinima hahaha def add stude...