Python函数作为参数的传递

跟着这个例子,一定会清楚的明白Python中函数究竟是什么,下面让我们来进行归纳和总结。
Observation

def show():
    print('This is a show!')

我的得到了一个函数
再来看两个print():

print(show)
print(show())

结果

<function show at 0x000001BCDF8AF6A8>
This is a show!
None

分析
一个函数,若没有没有加括号,将得到一个地址,结果中第一行就是没有加括号的show函数的print结果。
而在第二个print,先对函数进行了调用,然后再pirint,这时show函数开始执行。需要注意的是,Python中任何函数都是由返回值的,若没有写返回值,则默认返回值为None–表示返回为空。因为返回值表示一个函数的结束,所以它会在最后才可以得到结果。

补充
在讨论主题时,我们还需要了解一个基本常识:
Observation

v = show
v()

结果

This is a show!

分析
我们已经知道了函数如果不加括号时,可以作为一个地址,这时我们将其赋值给另一个变量时,这个变量也可以变为一个函数。所以,我们可以理解为:函数也是一种特殊的数据类型。
比如:

a = 3
b = a

我们知道b现在和a的数据类型时相同的。
所以我们在Python中对函数同样可以进行同样的操作,因为函数名作为一个地址指向了内存的一个位置。当将其赋值给另一个变量时,这时只要在变量后面加括号就可以调用函数。

将函数作为参数传递

下面我们来观察,若将函数作为参数传递时,计算机要做什么事情。
Observation

def func(arg):
    arg()
def show():
    print('This is a show!')
func(show)

分析
有了上文所说的知识,这部分理解起来就不会困难了。
首先将show函数地址作为参数调用函数func,而func的形参arg接收了show的地址,(这里相当于arg = show),所以在func函数内调用了show函数(或者说时arg()函数,名字什么的不重要)。
结果显示:

This is a show!

Wonderful!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值