python裝飾器練習

2021-09-30 17:26:18 字數 1429 閱讀 4754

判斷是否是root使用者

def hahaha(fc):

def woshinima(*args):

if args[0]=="root":  #args是列表,儘管只有乙個元素,但是必須是[0]

return fc(*args)

print("error")

return woshinima

@hahaha

def add_student(name):

print("新增學生資訊...")

@hahaha

def del_student(name):

print("刪除學生資訊...")

add_student("root")

del_student("root")

#############################

import functools

import inspect

def hahaha(fc):

@functools.wraps(fc)

def woshinima(*args,**kwargs):

res=inspect.getcallargs(fc,*args,**kwargs)

if res.get("name")=="root":  #自動生成根據形參對應的字典

return fc(*args)

print("error")

return woshinima

@hahaha

def add_student(name):

print("新增學生資訊...")

@hahaha

def del_student(name):

print("刪除學生資訊...")

add_student( "root")

del_student("root")

#################實現判斷功能

import functools

def nima(fc):

@functools.wraps(fc)

def wra(*args, **kargs):

for arg in args+tuple(kargs.values()):

if not isinstance(arg ,int):

raise typeerror("必須為整形")

return fc(*args, **kargs)

return wra

@nima

def add(*args, **kwargs):

return sum(args + tuple(kwargs.values()))

print(add(1, 2, 3,a=1,b=1))

print(add(1, 2, 3,a=1,b=1.1))

args:元組

kwargs:

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裝飾器練習

裝飾器的初步使用 需求 1.登入京東 2.有3個頁面home finance book 3.檢測有沒有登入,沒登入呼叫登入介面 4.home使用京東自己的登入 auth type jingdong def login auth type,flag false deflogged f def hadl...