python高级函数

得意时要看淡,失意时要看开。不论得意失意,切莫大意;不论成功失败,切莫止步。志得意满时,需要的是淡然,给自己留一条退路;失意落魄时,需要的是泰然,给自己觅一条出路python高级函数,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

高阶函数

函数作参数

# 对于函数function,需要用()才是函数调用,单个函数名为函数本身

# 函数没有像Java的反射的概念,function为函数本身,function(参数)为函数调用
def func(x,a):
    return x(a)
func(abs,-12)
12
# 能够获取函数本身后就可以将函数作为变量进行传递

def add(*args):
    return sum(args)

def math(function,*args):
    return function(*args)
math(add,1,2,3)
6

map()函数

# Python内建了map()和reduce()函数

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

def add(a):
    return a**2

map_add=map(add,[1,2,3,4])
for i in map_add:
    print(i)
1
4
9
16

reduce()函数

# reduce()函数把一个函数作用在一个序列上

def add1(x,y):
    return x+y
reduce_add=reduce(add,[1,2,3,4])
print(reduce_add)
---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

~\AppData\Local\Temp/ipykernel_12684/1983324346.py in <module>
      3 def add1(x,y):
      4     return x+y
----> 5 reduce_add=reduce(add1,[1,2,3,4])
      6 print(reduce_add)


NameError: name 'reduce' is not defined
from functools import reduce
def add1(x,y):
    return x+y
reduce_add=reduce(add1,[1,2,3,4])
print(reduce_add)
10

filter()函数

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

def select(a):
    return a%2==0
list_one=[1,2,3,4,5,6,7,8,9,10]
list_two=filter(select,list_one)
for i in list_two:
    print(i,end=" ")
2 4 6 8 10 

sorted()函数

# sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序.

list_three=sorted([9,8,7,6,5])
for i in list_three:
    print(i,end=" ")
5 6 7 8 9 

函数作返回值

# 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。
def add(*args):
    print(sum(args))
    
def delete(x,y):
    print(x-y)

def math(function_name):
    if function_name==add:
        return add
    elif function_name==delete:
        return delete
    else:
        return "None Function Nmae"

math(add)(1,2,3)
6

匿名函数lambda

# 传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。

# 匿名函数lambda x: x * x,y实际上就是: 关键字lambda表示匿名函数,冒号前面的x表示函数参数,后面为逻辑,y为实参

# 匿名只能是一个表达式,返回值就是该表达式的结果。也可以作复制给变量

x=lambda x,y:x+y
print(x)

y=lambda x: sum(x) ,[1,2,3]
print(y)

print(lambda x:x**2,[2,4,8])
<function <lambda> at 0x0000020362785F70>
(<function <lambda> at 0x00000203626AD820>, [1, 2, 3])
<function <lambda> at 0x0000020362785550> [2, 4, 8]

装饰器

# 代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)
@log
def now():
    print('2015-3-25')

    
# @log就是一个装饰器

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/156286.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!