栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python的一些高阶用法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python的一些高阶用法

一、函数式编程

Python中的函数是对象,可以赋值给变量,Python提供了很多函数式编程特性,如map, reduce, filter, sorted等内置函数,都支持函数作为参数。函数式编程中的要点,包括高阶函数、匿名函数、装饰器、偏函数等等。
1.lambda匿名函数
lambda匿名函数在一些工程项目中经常出现,匿名函数就是没有定义函数的名称,用来实现简单的功能,语法是

#param_list是函数的参数,expression是函数体,用一行表示
lambda param_list: expression
#实例,运行结果是3
func=lambda x, y: x+y
func(1,2)

2.高阶函数
函数可以赋值给变量,函数的参数能接收变量,所以一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。
map函数
map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。(Iterator是惰性序列,需要通过list()函数让它把返回结果变为list。)
语法:map(function, iterable, …)

def main(x):
    return x*x
y=list(map(main,[0,1,2,3,4,5]))
y
#输出[0, 1, 4, 9, 16, 25]

reduce函数
reduce把一个函数作用在一个序列[x1, x2, x3, …]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算:
语法:reduce(function, iterable[, initializer])

#在python3中,内置函数中已经没有reduce了。要使用reduce,需要从functools模块里引入
from functools import reduce
reduce(lambda x, y: x+y, [1,2,3,4,5])
#输出15

filter函数
和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。filter()函数返回的是一个Iterator,也就是一个惰性序列,同样需要通过list()函数让它把返回结果变为list。
语法:filter(function, iterable)

def m(x):
    return x%2==1
list(filter(m,[1,2,3,4,5,6,7,9]))
#输出[1, 3, 5, 7, 9]

sorted函数
sorted函数对所有可迭代的对象进行排序操作,它可以接收一个key函数来实现自定义的排序
语法:sorted(iterable, key=None, reverse=False)

#按每个元素的第一个元素值大小排序
sorted([[2,1],[6,2],[1,4],[10,11]], key=lambda x:x[0])
#输出[[1, 4], [2, 1], [6, 2], [10, 11]]

3. 函数实现闭包
高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。特点是函数中有定义一个新函数,新函数名做为返回值返回给函数。

#get_result函数中定义了一个新函数get_add,*m为可变参数
def get_result(*m):
    def get_add():
        x=0
        for i in m:
            x +=i
        return x
    return get_add
y = get_result(1,2,3,4,5)
y()     #结果15
y = get_result(1,2)
y()     #结果3

4.迭代器与生成器
4.1.迭代器
迭代器指的是可以使用next()方法来回调的对象,可以对可迭代对象使用iter()方法,将其转换为迭代器。
迭代器优势: 所有的元素不是一次性加载的,在调用next方法才会返回,不需要考虑内存问题。next()只能往后进行访问。

迭代器应用场景: list规模过大,出于对内存的考虑使用迭代器。 有规律,但是不能使用列表推导式描述

  • List item

4.2.生成器
生成器的优点是延迟计算,一次返回一个结果,这样非常适用于大数据量的计算。但是,使用生成器必须要注意的一点是:生成器只能遍历一次。

  • List item

5. 装饰器
Python中,常见的类装饰器包括:
@staticmathod、@classmethod和@property

@staticmethod:类的静态方法,跟成员方法的区别是没有self参数,并且可以在类不进行实例化的情况下调用。
@classmethod:跟成员方法的区别是接收的第一个参数不是self,而是cls(当前类的具体类型)
@property:表示可以直接通过类实例直接访问的信息。

  • List item
二、列表
  • List item
三、字典
  • List item
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/840280.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号