เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

HTML Generator

คุณกำลังเขียนสคริปต์ที่สร้าง HTML สำหรับหน้าเว็บแบบ on the fly โดยตอนนี้มี decorator สองตัวที่เพิ่มแท็ก bold หรือ italics ให้กับฟังก์ชันที่คืนค่าเป็น string แต่ decorator ทั้งสองนี้มีโครงสร้างที่คล้ายกันมาก แทนที่จะเขียน decorator ลักษณะเดิมซ้ำๆ หลายตัว คุณต้องการสร้าง decorator ตัวเดียวชื่อ html() ที่รับคู่ของแท็กเปิดและแท็กปิดใดก็ได้

def bold(func):
  @wraps(func)
  def wrapper(*args, **kwargs):
    msg = func(*args, **kwargs)
    return '<b>{}</b>'.format(msg)
  return wrapper
def italics(func):
  @wraps(func)
  def wrapper(*args, **kwargs):
    msg = func(*args, **kwargs)
    return '<i>{}</i>'.format(msg)
  return wrapper

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การเขียนฟังก์ชันใน Python

ดูคอร์ส

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

def html(open_tag, close_tag):
  def decorator(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
      msg = func(*args, **kwargs)
      return '{}{}{}'.format(open_tag, msg, close_tag)
    # Return the decorated function
    return ____
  # Return the decorator
  return ____
แก้ไขและรันโค้ด