1. Learn
  2. /
  3. คอร์ส
  4. /
  5. การเขียนฟังก์ชันใน Python

Connected

แบบฝึกหัด

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

คำแนะนำ 1/4

undefined XP
  • 1

    คืนค่า decorator และฟังก์ชันที่ถูก decorate จากตำแหน่งที่ถูกต้องใน decorator html() ใหม่นี้

  • 2

    ใช้ decorator html() เพื่อครอบค่าที่คืนมาจาก hello() ด้วย string <b> และ </b> (แท็ก HTML ที่หมายถึง "ตัวหนา")

  • 3

    ใช้ html() เพื่อครอบค่าที่คืนมาจาก goodbye() ด้วย string <i> และ </i> (แท็ก HTML ที่หมายถึง "ตัวเอียง")

  • 4

    ใช้ html() เพื่อครอบ hello_goodbye() ด้วย DIV โดยเพิ่ม string <div> และ </div> ล้อมรอบ string ดังกล่าว