Python中的函数对象传递

在Python 中函数也是对象,可以把函数分配给变量,把函数存储在数据结构中,作为参数传递给其他函数,甚至作为函数的返回值。

def hello() :
    print("Hello World!")

say = hello

say()

如上述代码中,我可以将hello函数作为对象赋值给变量say , 然后你就可以像普通函数调用一样去调用say。

如果我们删掉原来的hello函数,是否可以继续调用say函数对象呢?

def hello() :
    print("Hello World!")

say = hello

del hello
say()

答案是肯定的,函数对象及其名称是相互独立的实体。

由于函数是对象,因此还可以将函数作为参数传递给其他函数。

def hello(hi) :
    o = hi + " Hello World!"
    return o

def aomi(func) :
   say = func("alex")
   print(say)

aomi(hello)

结果:

alex Hello World!

Process finished with exit code 0

将函数对象作为参数传递给其他函数的功能非常的强大,可以用来将程序中的行为抽象出来并传递出去。

能接受其他函数作为参数的函数被称为高阶函数。高阶函数是函数式编程风格中必不可少的一部分。Python中具有代表性的高阶函数是内置的map函数。map函数接收一个函数对象和一个可迭代的对象,然后在可迭代对象中的每一个元素上调用该函数来生成结果。

def hello(hi) :
    o = hi + " Hello World!"
    return o

print(list(map(hello, ['alex','mark','tom'])))

结果:

['alex Hello World!', 'mark Hello World!', 'tom Hello World!']

Process finished with exit code 0

可以看出,map遍历了真个列表并将hello函数应用于每一个元素。所以得到一个新的列表对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值