函数引用:
先看下面一段代码:
# 定义一个函数
def test():
print("=== test ===")
test()
print(test)
输出结果:
从输出结果可以看出:
当函数名带有小括号的时候(test()),表示调用该函数;
但是如果函数名不带有小括号(test),就表示一个指向函数块的对象,此时 test 表示函数的引用; <function test at 0x009994A8> 表示该对象是 function 类型的,对象名为 test,以及对象在内存中的地 址为 0x009994A8。
如果定义一个变量 a = test,那么就表示 a 也指向 test 所指向的函数体,即变量 a 也是函数的引用,那么 a() 也可以调用该函数,如下:
# 定义一个函数
def test():
print("=== test ===")
test()
print(test)
# 定义一个变量 a = test,那么 a 就指向 test 所指向的函数体,即 a 也成了函数的引用
a = test
# 输出变量 a 的值和输出 test 的值一样
print(a)
# 那么 a() 也可以调用上面的函数 test()
a()
输出结果: