11.4 传递函数:
当学习一门如C的语言时,函数指针的概念是一个高级话题,但是对于函数就像其他对象的
Python来说就不是那么回事了。
函数是可以被引用的(访问或者以其他变量作为其别名),也作为参数传入函数,以及作为列表和
字段等等容器对象的元素。
因为所有的对象都是通过引用来传递的,函数也不列外。当对一个变量赋值时,实际是将
相同对象的引用赋值给这个变量。
def foo():
print 'in foo()'
bar=foo
bar()
C:Python27python.exe C:/Users/TLCB/PycharmProjects/untitled/mycompany/eee/a3.py
in foo()
def foo():
print 'in foo()'
def bar(xx):
foo()
print bar(foo)
C:Python27python.exe C:/Users/TLCB/PycharmProjects/untitled/mycompany/eee/a3.py
in foo()
None
一个将函数作为参数传递,并在函数体内调用这些函数,更加实际的例子。这个脚本用传入的
转换函数简单将一个序列的数转化为相同的类型。
def convert(func,seq):
print func(seq)
print type(func(seq))
a=123
print type(a)
print convert(str,a)
C:Python27python.exe C:/Users/TLCB/PycharmProjects/untitled/mycompany/eee/a4.py
<type 'int'>
123
<type 'str'>
None