Python不归路_装饰器(二)

装饰器上节回顾

  装饰器主要是由高阶函数和嵌套函数组成的,它由有两大特性:1、不改变被装饰函数原代码;2、不改变被装饰函数调用方式

  高阶函数主要有两大特性:1、被装饰函数作为高阶函数的参数;2、return函数

  嵌套函数特性:在一个函数内,新定义一个函数

  下面我们来看一段代码,给login_index()和login_mang()添加用户密码认证的功能的装饰器。

user=‘gally‘ #定义用户名   
password=‘123‘  #定义密码
def auth(func):  #定义装饰器   被装饰函数作为高阶函数参数
    def deco(*args,**kwargs):  #嵌套函数
        name=input(‘用户名:‘)
        passwd=input(‘密码:‘)
        if name==user and passwd == password:
            func(*args,**kwargs)
        else:
            pass
    return deco  #返回函数    return函数
@auth # login_index=auth(login_index)=deco
def login_index():
    print(‘welcome index‘)
@auth
def login_mang():
    print(‘welcome mang‘)
login_index()  #执行
login_mang()  #执行

  执行结果

用户名:gally
密码:123
welcome index
用户名:gally
密码:123
welcome mang

  在这段代码中,没有修改login_index()和login_mang()原代码内容,也没有改变login_index()和login_mang()函数调用方式,同时给login_index()和login_mang()函数添加了用户认证的功能。这就是装饰器,也叫语法糖。

 

-------不会开发的运维不是好厨师

时间: 2024-12-15 18:10:20

Python不归路_装饰器(二)的相关文章

Python不归路_装饰器(一)

装饰器 装饰器 什么是装饰器?给现有函数添加新功能的函数,不更改现有函数源代码,现有函数调用方式.装饰器是由高阶函数和嵌套函数组成. 概括上面这句话的意思:1.装饰器 - - - > 函数 : 2.不更改现有函数源代码 3.不更改现有函数调用方式 4.装饰器对于函数来说是透明的(不产生任何影响) 装饰器运用的情景:在生产环境中,业务不能中断时,要给某些大量调用函数填加新功能时. 高阶函数  怎么样的函数才是高阶函数 1.把函数名作为实参传递给另外一个函数 2.返回值中包括函数 下面我们来感受下高

Python不归路_字符编码操作

文件操作补充 上篇随笔中写了文件操作的几个方法,其中truncate()方法遗漏,truncate()方法作用是截取内容,f.truncate()不带参数会清空文件内容,带参数表示截取从零到参数的位置 字符编码 在<Python不归路_零基础学习二>中我们已经学习了一些编码的知识,比如ASCII一共有255个符号,Unicode中,中文字符占两个字节,英文占一个字节,utf-8是unicode的优化方案,中文字节占三个字符.不同字符编码之间需要相互转化才能正常读取.encode和decode,

Python成长之路_装饰器

一.初入装饰器 1.首先呢我们有这么一段代码,这段代码假如是N个业务部门的函数 1 def f1(aaa): 2 print('我是F1业务') 3 if aaa == 'f1': 4 return 'ok' 5 6 def f2(aaa): 7 print('我是F2业务') 8 if aaa == 'f2': 9 return 'ok' 业务代码 这里呢也就是当我们调用上面的函数的时候,传入值给aaa,当aaa的值等于f1或者f2就返回ok 2.公司有N个业务部门,1个基础平台部门,基础平台

Python不归路_文件操作(一)

Python文件操作 Python文件操作的语法是: open(file,mode,buffering,encoding,erros,newline,closefd) 我们先来看下各个参数, file:很明显,输入文件的路径. mode:mode参数有很多  r 以只读方式打开文件,默认参数  r+ 以读写方式打开文件   w 以写入方式打开文件,如果文件存在,先删除原文件,再创建文件:如果文件不存在直接创建  w+ 以读写方式打开文件,如果文件存在,先删除原文件,再创建文件:如果文件不存在直接

Python不归路_迭代器

迭代器: for循环可以对两类数据类型进行迭代: 1.比如list.tuple.dict.set等 2.带有yield关键字的函数或者能用__next__()进行调用的,也就是生成器 能被for调用的对象都是Iterable的,可以使用isinstance方法验证是不是Iterable from collections import Iterable a=[1,'b','c'] b={'name':'gally','age':23} isinstance(a,Iterable) isinstan

Python不归路_生成器

生成器:生成器是一次生成一个值的特殊类型函数.可以将其视为可恢复函数.调用该函数将返回一个可用于生成连续 x 值的生成器[Generator],生成器具有一边计算一边生生成的功能,起到节省空间的作用,真正能做到按需所取.来看下面这段代码: [ x**2 for x in range(20) ]输出结果: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361]-----------

python高级编程之装饰器04

from __future__ import with_statement # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #with和contextlib #对于要确保即使发生一个错误时也能运行一些清理代码而言,try...finally语句很有用,对以下场景,如: """ 关闭一个文件, 释放一个锁 创建一个临时代码补丁 在特殊环境中运行受保护代码 ----------- with语句覆盖

Python(四)装饰器、迭代器&生成器、re正则表达式、字符串格式化

本章内容: 装饰器 迭代器 & 生成器 re 正则表达式 字符串格式化 装饰器 装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用.概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能. 先定义一个基本的装饰器: ########## 基本装饰器 ########## def orter(func):    #定义装饰器     de

Python函数编程——闭包和装饰器

Python函数编程--闭包和装饰器 一.闭包 关于闭包,即函数定义和函数表达式位于另一个函数的函数体内(嵌套函数).而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量.参数.当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包.也就是说,内部函数会在外部函数返回后被执行.而当这个内部函数执行时,它仍然必需访问其外部函数的局部变量.参数以及其他内部函数.这些局部变量.参数和函数声明(最初时)的值是外部函数返回时的值,但也会受到内部函数的影响. def outer(