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

ติด tag ให้ฟังก์ชันของคุณ

การติด tag หมายถึงการกำหนดสตริงหนึ่งตัวหรือมากกว่านั้นให้กับสิ่งใดสิ่งหนึ่งเพื่อใช้เป็นป้ายกำกับ ตัวอย่างเช่น เรามักติด tag ให้กับอีเมลหรือรูปภาพเพื่อให้ค้นหาได้ในภายหลัง คราวนี้ลองเขียน decorator ที่ช่วยให้ติด tag ให้ฟังก์ชันด้วยรายการ tag แบบใดก็ได้ตามต้องการ ซึ่งสามารถนำไปใช้ประโยชน์ได้หลายอย่าง เช่น

  • บันทึกข้อมูลว่าใครเป็นผู้พัฒนาฟังก์ชันนั้น เพื่อให้ผู้ใช้รู้ว่าควรถามใครเมื่อพบปัญหา
  • ติดป้ายฟังก์ชันว่า "experimental" เพื่อแจ้งให้ผู้ใช้ทราบว่า input และ output อาจเปลี่ยนแปลงได้ในอนาคต
  • ทำเครื่องหมายฟังก์ชันที่วางแผนจะลบออกในเวอร์ชันถัดไปของโค้ด
  • และอื่น ๆ

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

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

ดูคอร์ส

คำแนะนำการฝึกหัด

  • กำหนด decorator ใหม่ชื่อ decorator() เพื่อ return ออกไป
  • ตรวจสอบให้แน่ใจว่าฟังก์ชันที่ถูก decorate ยังคง metadata ของตัวเองไว้
  • เรียกฟังก์ชันที่กำลัง decorate อยู่ แล้ว return ผลลัพธ์
  • Return decorator ใหม่ที่สร้างขึ้น

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

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

def tag(*tags):
  # Define a new decorator, named "decorator", to return
  def ____(____):
    # Ensure the decorated function keeps its metadata
    @____(____)
    def wrapper(*args, **kwargs):
      # Call the function being decorated and return the result
      return ____(____, ____)
    wrapper.tags = tags
    return wrapper
  # Return the new decorator
  return ____

@tag('test', 'this is a tag')
def foo():
  pass

print(foo.tags)
แก้ไขและรันโค้ด