python-2

匿名函数

匿名函数:

1.lambda只是一个表达式,而不是一个代码块,函数体比def简单很多。
2.仅仅能在lambda表达式中封装有限的逻辑。
3.lambda 函数拥有自己的命名空间。
4.在使用 map, filter,reduce 等函数的时候,为了方便,对一些简单的函数,我们通常使用匿名函数的方式进行处理,其基本形式是:
lambda <variables>: <expression>
例如:

print map(square, range(5))

替换为:

print map(lambda x: x * x, range(5))

高阶函数

以函数作为参数,或者返回一个函数的函数是高阶函数,常用的例子有 map 和 filter 函数:
map(f, sq) 函数将 f 作用到 sq 的每个元素上去,并返回结果组成的列表,相当于:
[f(s) for s in sq]

def square(x):
    """Square of x."""
    return x*x
a=map(square, range(5))
print(list(a))
>>>[0, 1, 4, 9, 16]

filter(f, sq) 函数的作用相当于,对于 sq 的每个元素 s,返回所有 f(s) 为 True 的 s 组成的列表,相当于:

[s for s in sq if f(s)]

def is_even(x):
    return x % 2 == 0
b=filter(is_even, range(5))
print(list(b))
>>>[0, 2, 4]

reduce(f, sq) 函数接受一个二元操作函数 f(x,y),并对于序列 sq 每次合并两个元素:

def my_add(x, y):
    return x + y

reduce(my_add, [1,2,3,4,5])
>>>15

装饰器

装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。应用场景:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器的作用就是为已经存在的对象添加额外的功能。

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

日志
from functools import wraps

def logit(func):
    @wraps(func)
    def with_logging(*args, **kwargs):
        print(func.__name__ + " was called")
        return func(*args, **kwargs)

    return with_logging


@logit
def addition_func(x):
    """Do some math."""
    return x + x
result = addition_func(4)

操作符优先级

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值