Python不归路_装饰器(一)

装饰器

  装饰器 什么是装饰器?给现有函数添加新功能的函数,不更改现有函数源代码,现有函数调用方式。装饰器是由高阶函数和嵌套函数组成。

  概括上面这句话的意思:1、装饰器 - - - > 函数 ;

             2、不更改现有函数源代码

             3、不更改现有函数调用方式

             4、装饰器对于函数来说是透明的(不产生任何影响)

  装饰器运用的情景:在生产环境中,业务不能中断时,要给某些大量调用函数填加新功能时。

  高阶函数  怎么样的函数才是高阶函数

  1.把函数名作为实参传递给另外一个函数

  2.返回值中包括函数

  下面我们来感受下高阶函数是怎么把函数名作为实参传递给另外一个函数的

def prt():
    print(‘this is prt!‘)
def func1(x):
    print(‘this is func1!‘)
    x()
func1(prt)

  输出结果:

this is func1! #执行print(‘this is func1‘)语句
this is prt! #执行x(),在func1调用时,将函数prt作为参数传入,所以x()=prt()。

  我们可以得出一个结论,函数即变量。

  返回值return

  在《初始函数(一)》中,我们已经知道函数可以返回任何值,包括函数,函数返回值可以采用赋值给变量的形式被捕获。  

def prt():
    print(‘this is prt!‘)
def func1():
    print(‘this is func1!‘)
    return func1func1(prt)

  输出结果:

this is func1!
<function func1 at 0x000001EEDC1316A8> #返回值func1内存地址    return func1

 然后我们可以把返回值赋值给某一变量

prt=func1()

  嵌套函数

  在函数嵌套定义另一个函数,一定是在函数中定义的。

def func1():
     def func2():
        print(‘this is func2’)
        return 1
    return 1

  

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

时间: 2024-10-28 21:00:39

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

Python不归路_装饰器(二)

装饰器上节回顾 装饰器主要是由高阶函数和嵌套函数组成的,它由有两大特性:1.不改变被装饰函数原代码:2.不改变被装饰函数调用方式 高阶函数主要有两大特性:1.被装饰函数作为高阶函数的参数:2.return函数 嵌套函数特性:在一个函数内,新定义一个函数 下面我们来看一段代码,给login_index()和login_mang()添加用户密码认证的功能的装饰器. user='gally' #定义用户名 password='123' #定义密码 def auth(func): #定义装饰器 被装饰函

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高级编程之装饰器02

#装饰器02 #参数检查 #主要是用在接收或者返回函数,在特定上下文执行时可能有用 #例如:有一个函数通过XML-RPC调用,python将不能和静态类语言中一样直接提供它的完整签名,当XML-RPC客户要求函数签名时,就需要这样的能力 """ xml-rpc相关学习:http://zh.wikipedia.org/wiki/XML-RPC """ #装饰器能提供这种签名类型,并确保输入输出与此有关,如下 from itertools impor