#!/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.返回值包含函数名(不修改函数的调用方式)
三、嵌套函数
'''
'''
嵌套函数+高阶函数=装饰器
'''

最新文章

  1. 《IT蓝豹》PlayNewsStandDemo资讯类新闻客户端框架
  2. Http规范
  3. XStream-----把JavaBean转换为xml的工具
  4. How parse REST service JSON response
  5. 忘记mysql root用户密码
  6. Python 学习之二:Python超短教程
  7. Discuz x2.5 单页制作的教程
  8. iOS开发之OCR光学识别储蓄卡以及信用卡
  9. 【CSS3】Advanced5:At Rules:@import, @media, and @font-face
  10. 《Windows编程循序渐进》——基本控件
  11. C++ shared_ptr、unique_ptr、weak_ptr
  12. 弄懂JDK、JRE和JVM到底是什么
  13. 升级到 .NET Core 2.1
  14. k8s namespace/volume
  15. Fiddler抓包使用教程-Https
  16. HDOJ2007_平方和与立方和
  17. timescale 时间尺度
  18. Json对象和字符串互相转换 数据拼接 JSON使用方式
  19. C艹目录
  20. Final冲刺贡献分

热门文章

  1. 第1天:CSS基本样式
  2. SqlBulkCopy 批量insert
  3. spring boot 登录注册 demo (二) -- 数据库访问
  4. Python学习笔记开篇
  5. vue.js基础知识篇(6):组件详解
  6. Java虚拟机基础
  7. Python学习笔记6
  8. monogodb使用
  9. POI操作Excel的API注意点总结
  10. spring事务详解