Python之路,Day4 - Python基础4 (new版)

  • 装饰器
user_status = False #用户登录后改为True

def login(func): #传入想调用的函数名

    def inner():
_username = 'alex' #假装这是DB里存的用户信息
_password = 'abc!23' #假装这是DB里存的用户信息
global user_status if user_status == False:
username = input('user:')
password = input('password:') if username == _username and password == _password :
print('welcome login...')
user_status = True
else:
print('wrong username or password!')
else:
print('用户已登录,验证通过...') if user_status:
func() #执行传入的函数名的函数 return inner #返回内层函数的内存地址 def home():
print('----首页----') def america():
print('----欧美专区----') def japan():
print('----日韩专区----') @login #相当于henan = login(henan) ,返回inner
def henan():
print('----河南专区----') henan()
  • 装饰带参数的函数  支持多个参数
user_status = False #用户登录后改为True

def login(func): #传入想调用的函数名

    def inner(*args,**kwargs):
_username = 'alex' #假装这是DB里存的用户信息
_password = 'abc!23' #假装这是DB里存的用户信息
global user_status if user_status == False:
username = input('user:')
password = input('password:') if username == _username and password == _password :
print('welcome login...')
user_status = True
else:
print('wrong username or password!')
else:
print('用户已登录,验证通过...') if user_status:
func(*args,**kwargs) #执行传入的函数名的函数 return inner #返回内层函数的内存地址 def home():
print('----首页----') def america():
print('----欧美专区----') @login
def japan():
print('----日韩专区----') @login #相当于henan = login(henan) = inner
def henan(style):
print('----河南专区----',style) henan('3p')
japan()
  • 装饰器带参数
user_status = False #用户登录后改为True

def login(author_type): #传入想调用的函数名
def outer(func):
def inner(*args,**kwargs):
_username = 'alex' #假装这是DB里存的用户信息
_password = 'abc!23' #假装这是DB里存的用户信息
global user_status if user_status == False:
username = input('user:')
password = input('password:') if username == _username and password == _password :
print('welcome login...')
user_status = True
else:
print('wrong username or password!')
else:
print('用户已登录,验证通过...') if user_status:
func(*args,**kwargs) #执行传入的函数名的函数 return inner #返回内层函数的内存地址
return outer def home():
print('----首页----') def america():
print('----欧美专区----') @login('wx')
def japan():
print('----日韩专区----') @login('qq') #相当于 xx = login('qq') = outer, henan = xx(henan) = inner
def henan(style):
print('----河南专区----',style) henan('3p')
japan()

Python全栈之路----函数进阶----装饰器的更多相关文章

  1. Python全栈之路----函数进阶----名称空间

    又名name space,顾名思义就是存放名字的地方,存什么名字呢?举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的=地方 名称空间共3种,分别如下 ...

  2. Python全栈之路----函数进阶----迭代器

    我们已经知道,可以直接作用于 for 循环的数据类型有以下几种: 一类是集合数据类型,如 list , tuple , dict , set ,str 等: 一类是 generator ,包括生成器和 ...

  3. Python全栈之路----函数进阶----作用域的查找空间

    n = 10 def func(): n = 20 print('func:',n) def func2(): n = 30 print('func2:',n) def func3(): print( ...

  4. Python全栈之路----函数进阶----闭包

    关于闭包,即函数定义和函数表达式位于另一个函数的函数体内(嵌套函数).而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量.参数.当其中一个这样的内部函数在包含它们之外被调用时,就会形成闭 ...

  5. Python全栈之路----函数进阶----生成器

    生成器特点: 不能立即产生,取一次创建一次 只能往前走 等到走到最后,就会报错 >>> a = [i for i in range(1000)] >>> a [0, ...

  6. Python全栈之路----函数进阶----列表生成式

    列表生成式 现在有个需求,看列表[0,1,2,3,4,5,6,7,8,9],要求你把列表里每个值都加1,你怎么实现?你可能会想到两种方法. 二逼青年版 >>> a = [0,1,2, ...

  7. Python全栈开发之8、装饰器详解

    一文让你彻底明白Python装饰器原理,从此面试工作再也不怕了.转载请注明出处http://www.cnblogs.com/Wxtrkbc/p/5486253.html 一.装饰器 装饰器可以使函数执 ...

  8. 巨蟒python全栈开发-第15天 装饰器

    一.今日内容总览 关于函数的装饰器1.装饰器(重点,难点)(要求:反复写,代码不多但是很绕) 开闭原则:(比如,菜单是拆散的,一点点搞的,用友拆散自己的功能,以后就不用开发了) (1)对功能的扩展开放 ...

  9. Python全栈之路----函数----返回值

    函数外部的代码想要获取函数的执行结果,就可以在函数里用return语句,把结果返回. def stu_register(name,age,course='PY',country='CN'): prin ...

随机推荐

  1. nginx代理配置 配置中的静态资源配置,root 和 alias的区别

    这篇主要内容是:nginx代理配置 配置中的静态资源配置,root 和 alias的区别.启动注意事项! 为什么会在window上配置了nginx呢?最近我们的项目是静态资源单独放在一个工程里面,后端 ...

  2. 小技巧:windows软件窗口键盘移动

    alt+tab alt+空格 m键,上下左右操作

  3. Python入门 序列章

    内置函数range range([start,] stop[, step]) 第一个参数表示步长(默认为0),第二个参数表示终止值(结果中不包括这个值),第三个参数表示步长(默认为1, 实验发现不能用 ...

  4. Kotlin 基础语法

    Kotlin 文件以 .kt 为后缀. 包声明 代码文件的开头一般为包的声明: package com.runoob.main import java.util.* fun test() {} cla ...

  5. Promise使用

    Promise可以进行异步操作,比起回调函数,更加容易维护. 首先创建一个简单的Promise var p = new Promise( () => {}); console.log(p); / ...

  6. 雷林鹏分享:jQuery EasyUI 数据网格 - 创建页脚摘要

    jQuery EasyUI 数据网格 - 创建页脚摘要 在本教程中,我们将向您展示如何在数据网格(datagrid)页脚显示摘要信息行. 为了显示页脚行,您应该设置 showFooter 属性为 tr ...

  7. Python自学:第二章 Python之禅

    >>print import <Python之禅>,提姆·彼得斯著 美胜于丑. 显式优于隐式. 简单胜于复杂. 复杂总比复杂好. 平的比嵌套的好. 稀疏胜于稠密. 可读性计数. ...

  8. Django框架(七)

    15 Django组件-中间件 中间件 中间件的概念 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的 ...

  9. 第5天(半天)【shell编程初步、grep及正则表达式】

    第5天(半天)[shell编程初步.grep及正则表达式] shell编程初步(01)_recv shell脚本:文本文件 #!:/bin/bash #!:/usr/bin/python #!:/us ...

  10. 阿里云ssh断开处理办法

    一.背景说明 1.1 墙外的吐槽 云是个好东西但我一直不觉是个有那么好的东西,因为就较多次的体验来看,用得很难受:如果要我来选我宁愿自建机房.要说难受的具体原因原来倒是没想得很清楚,现在想来网速慢不是 ...