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. rabbitmq安装与高可用集群配置

    rabbitmq版本:3.6.12 rabbitmq安装 1.安装openssl wget http://www.openssl.org/source/openssl-1.0.0a.tar.gz &a ...

  2. 自动化测试系列:如何实现Selenium自动化读取H5手机缓存

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6890675.html 前言: 由于Se ...

  3. java 保存到mysql数据库中文乱码

    <property name="jdbcUrl">jdbc:mysql://localhost:3306/company?useUnicode=true&cha ...

  4. windows 添加开始菜单

    C:\Users\用户名(为你设置的电脑名称)\AppData\Roaming\Microsoft\Windows\Start Menu C:\ProgramData\Microsoft\Window ...

  5. 3.1 eureka自我保护

    故障现象: Down:是下线(掉线)的意思. 导致原因: 一句话:某时刻某一个微服务不可用了,eureka不会立刻清理,依旧会对该微服务的信息进行保存 什么是自我保护模式? 默认情况下,如果Eurek ...

  6. 利用python操作excel

    https://zhuanlan.zhihu.com/p/51292549 打开程序:https://segmentfault.com/q/1010000002441500

  7. Cordova结合Vue学习Camera

    简单聊两句 学习Vue+Cordova打包编译App,首先你要安装Cordova与vue,在这里本人就不说明了,自行看文档与搜索相关资料. Cordova中文官网地址 Vue中文官网地址 第一步:首先 ...

  8. Windows 2003 Server R2 x64 IIS6.0 eWebEditor无法显示的问题

    64位的操作系统安装成功后,一般IIS也是默认的64位的解析,所以将程序放到64位操作系统上的时候,会出现IIS错误,解决方案也非常简单,将64位IIS停止,启动32位的就可以了. 输入以下命令启用 ...

  9. Highcharts 时间格式化函数

    1.函数构造: Highcharts.dateFormat(String format, [Number time], [Boolean capitalize])    2.参数列表:   Strin ...

  10. ArcPy批量计算Mean Center的两个实例

    很久没用arcpy了,碰了好几次壁,把这次做的贴上来,以备下次可以跳过这些简单的问题 import arcpy arcpy.env.workspace = 'C:\Users\Qian\Documen ...