-1

現在、「Think Python」を使用して python を学習しています。このコードでは、以下のような特定のコードを使用していますが、初心者のプログラマーであり、それがどのように機能するのか理解できません。以下のコードとその背後にあるさまざまな概念を説明してください。

練習問題: 関数オブジェクトは、変数に割り当てたり、引数として渡すことができる値です。たとえば、do_twice は、関数オブジェクトを引数として取り、それを 2 回呼び出す関数です。

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 をスパム スパムとして返します。方法がわからず、この概念についてより詳細な説明が必要です。

4

1 に答える 1

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、 functiondo_twiceにパラメーターとして渡すことだけで、そのパラメーターは 2 回呼び出されますf

于 2013-03-29T18:32:38.690 に答える