困惑于Python中的函数对象使用

时间:2013-03-29 18:31:47

标签: python function object parameters

我目前正在使用“Think Python”学习python,其中我通过下面的某段代码来了解我是一名初学程序员我不明白它是如何工作的,请解释下面的代码以及背后的各种概念它

练习:函数对象是可以赋值给变量或作为参数传递的值。对于 例如,do_twice是一个函数,它将一个函数对象作为参数并调用它两次:

def do_twice(f):
    f()
    f()

# Here’s an example that uses do_twice to call a function named print_spam twice.

def print_spam():
    print 'spam'

do_twice(print_spam)

此代码将o / p表示为 垃圾邮件 垃圾邮件 我不知道如何,我想用这个概念进行更深入的解释

1 个答案:

答案 0 :(得分:3)

Python函数是第一类对象。就像其他对象一样,它们可以分配给变量并传递。

>>> def print_spam():
...     print 'spam'
... 
>>> print_spam
<function print_spam at 0x105722ed8>
>>> type(print_spam)
<type 'function'>
>>> another_name = print_spam
>>> another_name
<function print_spam at 0x105722ed8>
>>> another_name is print_spam
True
>>> another_name()
spam

在上面的示例会话中,我使用print_spam函数对象,将其分配给another_name,然后通过其他变量调用它。

你引用Think Python所做的所有代码都将print_spam作为参数传递给函数do_twice,该函数调用它的参数f两次。