0
私はデコレータとラッパーを実験しています。私は理解できないデコレータの動作を見つけました。pythonデコレータとラッパー関数debug
def decorator_function(original_function):
def wrapper_function():
print "wrapper is executed before {}".format(original_function.__name__)
return original_function() # Try it without()
return wrapper_function
@decorator_function
def display():
print("display function ran!")
私は機能の上に実行します。
In [59]: display()
wrapper is executed before display
display function ran!
私はラッパーの外の印刷機能を移動するときしかし、ラッパーがまったく実行されませんようです。 (おそらくそれは走ったが、私は証拠が表示されません。)
def decorator_function(original_function):
def wrapper_function():
#print "wrapper is executed before {}".format(original_function.__name__)
return original_function() # Try it without()
print "wrapper is executed before {}".format(original_function.__name__)
return wrapper_function
@decorator_function
def display():
print("display function ran!")
その後、私は見ていない「ラッパーが前に実行された...」もう。どうして? 私はここで何が欠けていますか?ときにコード負荷ときにコード実行ラッパーの実行中
In [63]: display()
display function ran!
より正確には、 'display'が定義されたとき(' decorator_function'が実際に実行されているとき)に、「ラッパーが実行されました」が出力されます。 – chepner