def tag(name, *content, class_=None, **attrs):
...: """Generate one or more HTML tags"""
...: if class_ is not None:
...: attrs['class'] = class_
...: attr_pairs = (f' {attr}="{value}"' for attr, value
...: in sorted(attrs.items()))
...: attr_str = ''.join(attr_pairs)
...: if content:
...: elements = (f'<{name}{attr_str}>{c}</{name}>'
...: for c in content)
...: return '\n'.join(elements)
...: else:
...: return f'<{name}{attr_str} />'
파이썬 중수가 되고 싶어서 책보는데..이런거 혼자서 생각 도저히 못할 듯요.
즉, <p>Hello</p>나 <img src="..."/> 같은 HTML 문자열을 파이썬에서 편하게 생성할 수 있게 해주는 미니 템플릿 엔진 같은 거죠.
왜 이런 패턴을 쓰는지
HTML 조각을 문자열 연결로 만들면 코드가 지저분해지고 오류 가능성이 높음.
이런 함수를 만들면 재사용 가능, 가독성↑, HTML 생성 로직 표준화 가능.
이건 플루언트한 파이썬 개발자들이 "템플릿 미니 DSL"을 구현할 때 자주 쓰는 패턴이에요.
GPT와 같이 공부하면됩니다 ㅎ