#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = '人生入戏'
user = "admin"
passwd = ""
def auth(auth_type):
#print("auth_type:",auth_type)
def out_wrapper(func):
#print("func",func)
def wrapper(*args,**kwargs):
#print(args,kwargs)
if auth_type == "":
username = input("username:").strip()
password = input("password:").strip()
if username == user and password == passwd:
print("start".center(20,"-"))
res = func(*args,**kwargs)#把函数的返回值赋值到res
print("end".center(20,"-"))
return res#返回函数的返回值
else:
print("error!")
elif auth_type =="":
print('') return wrapper
return out_wrapper def index():
print("index ok")
@auth(auth_type="")
def home(name):
print("home ok",name)
return 'from home'
@auth(auth_type="")
def bbs():
print("bbs ok") index()
print(home("你好"))#打印home函数的返回值
bbs() '''
装饰器:
定义:本质是函数,就是为了给其他的函数增加其他功能
原则:不能改变被装饰函数的源码和调用方式
'''
'''
一、函数等于'变量'
二、高阶函数:
1.把一个函数名当作实参传给另一个函数(在不修改被装饰函数的代码的情况下增加其他功能)
2.返回值包含函数名(不修改函数的调用方式)
三、嵌套函数
'''
'''
嵌套函数+高阶函数=装饰器
'''

Python装饰器主要用法的更多相关文章

  1. Python装饰器高级用法

    在Python中,装饰器一般用来修饰函数,实现公共功能,达到代码复用的目的.在函数定义前加上@xxxx,然后函数就注入了某些行为,很神奇!然而,这只是语法糖而已. 场景 假设,有一些工作函数,用来对数 ...

  2. 一篇文章搞懂Python装饰器所有用法

    01. 装饰器语法糖 如果你接触 Python 有一段时间了的话,想必你对 @ 符号一定不陌生了,没错 @ 符号就是装饰器的语法糖. 它放在一个函数开始定义的地方,它就像一顶帽子一样戴在这个函数的头上 ...

  3. python装饰器的用法

    def logger(func):    def inner(*args, **kwargs): #1         print "Arguments were: %s, %s" ...

  4. 简单说明Python中的装饰器的用法

    简单说明Python中的装饰器的用法 这篇文章主要简单说明了Python中的装饰器的用法,装饰器在Python的进阶学习中非常重要,示例代码基于Python2.x,需要的朋友可以参考下   装饰器对与 ...

  5. Python装饰器的另类用法

    之前有比较系统介绍过Python的装饰器(请查阅<详解Python装饰器>),本文算是一个补充.今天我们一起探讨一下装饰器的另类用法. 语法回顾 开始之前我们再将Python装饰器的语法回 ...

  6. Python装饰器的高级用法(翻译)

    原文地址 https://www.codementor.io/python/tutorial/advanced-use-python-decorators-class-function 介绍 我写这篇 ...

  7. Python的装饰器实例用法小结

    这篇文章主要介绍了Python装饰器用法,结合实例形式总结分析了Python常用装饰器的概念.功能.使用方法及相关注意事项 一.装饰器是什么 python的装饰器本质上是一个Python函数,它可以让 ...

  8. Python装饰器详解

    python中的装饰器是一个用得非常多的东西,我们可以把一些特定的方法.通用的方法写成一个个装饰器,这就为调用这些方法提供一个非常大的便利,如此提高我们代码的可读性以及简洁性,以及可扩展性. 在学习p ...

  9. Python装饰器由浅入深

    装饰器的功能在很多语言中都有,名字也不尽相同,其实它体现的是一种设计模式,强调的是开放封闭原则,更多的用于后期功能升级而不是编写新的代码.装饰器不光能装饰函数,也能装饰其他的对象,比如类,但通常,我们 ...

随机推荐

  1. zTree理解和简单Demo(转)

    zTree是利用 jQuery 的核心代码,实现一套能完成大部分常用功能的 Tree 插件.整个zTree的页面显示核心 代码是. <span style="font-family:V ...

  2. fodera20安装后的配置

    最近安装了Fedora 20 64bit,以下是一些优化配置,使之更适合国人使用. 1,安装gnome-tweak-tool设置工具 Fedora 19自带的系统设置工具十分简单,一些重要的地方都不能 ...

  3. BotVS开发基础—2.1 账户、行情、K线、深度

    代码 import json def main(): Log("账号信息:", exchange.GetAccount()); # Log("K 线数据:", ...

  4. Jquery笔记之第一天

    1.使用Jquery 方法一:下载JQuery 方法二:使用CDN内容分发网络 常用的国内CDN: 百度:<script src="https://apps.bdimg.com/lib ...

  5. 归并排序—Java版

    一开始做算法的时候,感觉递归算法很绕,所以我就在阅读别人代码的基础上,对代码每一步都添加自己的注解,方便我以后的学习. public class MergeSort { /** * 归并排序 * @p ...

  6. JavaScript 30 - 2 学习笔记

    学习JavaScirpt30的笔记! 有意思! 2------->   CSS clock 效果是这样的.... 这是改良过后的 版本.... 话不多说,直接来看代码. 首先是html部分 &l ...

  7. 关于package.json的理解

    在我们打包项目的时候或者使用node的时候,常常会看到package.json这个文件,里面乱七八糟的一大堆json,开始的时候没注意,以为是使用node或者npm的时候自动创建的,后来自己写demo ...

  8. chrome开发工具指南(九)

    检查和管理存储.数据库与缓存 查看和修改本地存储与会话存储. 检查和修改 IndexedDB 数据库. 对 Web SQL 数据库执行语句. 查看应用缓存和服务工作线程缓存. 点击一次按钮即可清除所有 ...

  9. NPIO 导出Execl

    步骤1:导入NOIO.dll    (我导入压缩包中的4.0)

  10. 探究JVM和GC

    1.Java堆中各代分布: 图1:Java堆中各代分布 Young:主要是用来存放新生的对象. Old:主要存放应用程序中生命周期长的内存对象. Permanent:是指内存的永久保存区域,主要存放C ...