1

次のようなコードがある場合:

def handler(self):
   self.run(self.connect)

def connect(self, param):
   #do stuff...

def run(self, connector):
   self.runner = connector

self.run(self.connect) を呼び出したときに最初に評価されるのは何ですか?

接続済みのもので実行しますか?またはまだ評価されていない self.connect で接続しますか?

4

2 に答える 2

6

関数をパラメーターとして渡しても呼び出されません。

In [105]: def f1(f):
   .....:     print 'hi'
   .....:     return f
   .....: 

In [106]: def f2():
   .....:     print 'hello'
   .....:     

In [107]: f1(f2)
hi
Out[107]: <function __main__.f2>

もちろん、関数呼び出しを別の関数に渡す場合、渡すのは戻り値です。

In [108]: f1(f2())
hello
hi

それらが呼び出される順序に注意してください: f2が最初に呼び出され、その戻り値が に渡されf1ます。

于 2013-03-06T20:00:25.670 に答える
2

質問のコードは実際には を呼び出しconnect()ていないため、関数は呼び出されません。のシノニムをself.run(self.connect)作成するだけです。self.runnerself.connect

于 2013-03-06T19:59:55.480 に答える