zoukankan      html  css  js  c++  java
  • 装饰器

    装饰器是什么呢?

    我们先来打一个比方,我写了一个python的插件

    提供给用户使用,但是在使用的过程中我添加了一些

    功能,可是又不希望用户改变调用方式,那么该怎么

    办呢?

    这个时候就用到装饰器假如我们有一个home函数如下:

    def home():

    print' this is the home page!'

    而我们希望用户在访问home 函数之前先验证一下权限,那么在

    用户不改变调用方法的情况下,就需要在home 中 调用一个

    login函数, 

    def login (usr):

     if uer =='eva_j':

    return True 

    def home():

    result =login()

    if fesult:

    print' this is the home page!'

    这样 可以实现我们的需求,但是我们看到 home 的代码发生了很大的变化,所有的代码都要被包裹在一个if 语句中,并且要进行缩进,这往往不是我们希望看到的,那么我们还可以怎么做呢>?

    def home():

    print'this is the home page!'

    print home

    输出:<function home at 0x0000000000219c978>

    我们定义了一个home函数,但是并不使用home()调用它 而是让程序打印出home方法的地址。

    那么我们再看这段代码:

    def login(usr):

    if uer == ‘eva_j’:

    return True 

    def wrapper (funcanme):

    if login (eva_j):

     return funcname

    def home():

    print 'this is the home page!'

    home=wrapper (home)

    home()

    输出的结果:this is 。sssssssssssss

  • 相关阅读:
    「笔记」高斯消元
    函数库
    数学公式杂记
    CF1290E Cartesian Tree
    洛谷 P4027 [NOI2007] 货币兑换
    审计ThinkCMF框架任意内容包含漏洞与复现
    PHP代码审计笔记(基础篇)--命令执行漏洞
    某校园缴费平台通用0day偶然发现之路
    【转】教育src挖掘经验
    近期学习文章的整理(超级干货总结分享)
  • 原文地址:https://www.cnblogs.com/djjv/p/7275411.html
Copyright © 2011-2022 走看看