【Python】基本概念

一.基本概念

《一》.函数式编程:

1.什么是函数式编程?

1) 是面向过程的编程方式;整个程序是以函数为基本单元;
2) 纯粹的函数式编程语言编写的函数没有变量;
3) 函数式编程特点:函数可以作为变量和返回值进行使用;
4) 一个函数如果接另外一个函数作为参数传入,那么这个函数就称为高阶函数;示例:
>> def myadd(x,y,f)
           return f(x) + f(y);

2.惰性计算:
1) 什么是惰性计算?
惰性计算是计算机编程中的一个概念,又称为:懒惰计算,懒汉计算,目的在于最小化计算机要做的工作;
2) 两种方式:延迟计算和短路计算;
惰性计算的最重要的好处是它可以构造一个无限的数据类型;
3)Python中的Iterator是惰性计算的序列,所以我们可以用Python表示“全体自然数”,“全体素数”这样的序列;
3.yield关键字:
一个带有 yield 的函数就是一个 generator,它和普通函数不同,生成一个 generator 看起来像函数调用,但不会执行任何函数代码,直到对其调用 next()(在 for 循环中会自动调用 next())才开始执行。虽然执行流程仍按函数的流程执行,但每执行到一个 yield 语句就会中断,并返回一个迭代值,下次执行时从 yield 的下一个语句继续执行。看起来就好像一个函数在正常执行的过程中被 yield 中断了数次,每次中断都会通过 yield 返回当前的迭代值.

《二》.Python中的装饰器

1.理解Python中的装饰器:

1)装饰器本质上是一个函数,它的作用主要是为了在不修改当前已存在的函数的前提下,为其添加额外的功能

2)装饰器经常用于又切面需求的场景:比如:插入日志,事务处理,性能测试,缓存,权限校验等,有了装饰器,我们可以将一些常用的且与业务无关的代码抽离出来,从而实现代码的重用

3)装饰器接收一个函数作为参数,并返回一个函数;可通过直接调用以及使用@方式进行使用;

2.装饰器语法:

示例1:简单的装饰器:

 

def show_name(func):
    def wrapper(* args,**wargs):
        print('this function name:%s'% func.__name__)
        return func(*args,**wargs)
    return wrapper

@show_name
def test_func1():
    print('hell world')

test_func1()

结果:

 

this function name:test_func1hell world

解释: 1) 函数show_name就是一个装饰器,整个过程就像,真正的业务流程在func里面没有改变,业务之外加入了日志像是把test_func1进行了装饰;

2) @符号是装饰器的语法糖,在定义函数的时候使用,避免再一次赋值操作;

3)@符号是装饰器的语法糖,在定义函数的时候使用,避免再一次赋值操作;

示例2:带有参数的装饰器

解释:

1)由于python的特性,外层传入参数能够被内层定义的函数使用,带参数的装饰器是其实是在原来的装饰器的基础上新封装一层,并且返回一个装饰器;

2)我们可以将它理解为一个含有参数的闭包;

3)代码:

 

def print_log(level):
    def decorator(func):
        def wrapper(*agrs,**kwargs):
            if level == 'error':
                print('it occurs a error,please check it')
            return func(*agrs)
        return wrapper

    return decorator

@print_log(level='error')
def test_func2():
    print('this is the function2')

test_func2()

结果:it occurs a error,please check it
this is the function2

 


 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值