Python学习笔记(二)

本文详细介绍了Python中的高阶特性,包括变量指向函数、函数作为参数、高阶函数如`map()`、`reduce()`、`filter()`的使用,以及`lambda`函数、装饰器的概念和应用。同时,讲解了偏函数`functools.partial`的作用,如何创建和使用模块,时间戳的获取,以及随机数的生成。此外,还提到了Python的除法运算和续行符的使用。
摘要由CSDN通过智能技术生成

17.变量可以指向函数,如:f=abs  f(-10);

函数名也是变量,如:abs=10 abs(-10)此时会出现错误,实际代码绝对不能这么写!

既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。如:

def add(x, y, f):
    return f(x) + f(y)
print(add(-5,6,abs))  #输出11

map()函数:map()函数接收两个参数,一个是函数,一个是Iterablemap将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。如:

def f(x):
    return x * x
r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
print(list(r))
#[1, 4, 9, 16, 25, 36, 49, 64, 81]

reduce()函数:reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)   如:

from functools import reduce
def add(x, y):
	return x + y
print(reduce(add, [1, 3, 5, 7, 9]))

18.filter()函数:和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。如:

def is_odd(n):
    return n % 2 == 1
print(list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15])))
# 结果: [1, 5, 9, 15]

应用(用filter求1000以内的素数):

def main():
    for n in primes():
        if n < 1000:
            print(n)
        else:
            break

def _odd_iter():
    n = 1
    while True:
        n = n + 2
        yield n

def _not_divisible(n):
    return lambda x: x % n > 0

def primes():
    yield 2
    it = _odd_iter()
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值