main_print 函数的问题

问题描述

我正在尝试一个带有装饰器功能的简单 python 程序。奇怪的是程序只执行了装饰器函数的print语句,调用函数main_print却没有执行?

decor.py

def decorator(some_func):
  def wrapper():
        print('execute wrapper function from the decorator function')
  return wrapper

@decorator
def main_print():
  print('executing main_print')

main_print()

输出显示

$ python3 decor.py 
print('execute wrapper function from the decorator function')

解决方法

我认为你必须调用装饰器内部的函数,例如

decor.py

def decorator(some_func):
  def wrapper():
        print('execute wrapper function from the decorator function')
        some_func()    # call the passed function        
  return wrapper

@decorator
def main_print():
  print('executing main_print')

main_print()