동적함수생성 질문드립니다.
안녕하세요 선생님!
감사히 잘 듣고 있는 수강생입니다.
맨 마지막 도전과제 질문이 있어 문의드립니다.
하나의 태그에 대해서만 만드는게 아니라
나온 html 태그들을 각 함수에 할당하는 for 문으로 한번 돌려보고 싶어서... 이런식으로 했더니 err가 납니다.
def 함수 <--- 이 함수부분을 동적으로 할당할 수 있는 방법이 있을까요....?
print_center 라고 되어있는부분은 계속 덮어씌워지는걸 확인했습니다.

답변 2
1
안녕하세요. 답변 도우미입니다.
Python에서 함수 이름을 동적으로 생성하는 것은 좀 복잡할 수 있습니다. globals() 함수를 사용하여 전역 변수 및 함수 이름을 동적으로 할당하는 것이 가능하기는 하지만, 일반적인 방법은 아닙니다. 그렇지만, 여기서는 당신의 문제를 해결하기 위해 이 방법을 사용해볼 수 있겠습니다.
먼저, 코드에서 문제가 되는 부분을 수정해보겠습니다:
html_list = ['b','i','h1','h5','h6','center']
func_list = ["print_1","print_2","print_3","print_4","print_5","print_6","print_7","print_8","print_9"]
def mark_html(tag):
def outer_wrapper(function):
def inner_wrapper(*args, **kwargs):
return f"<{tag}>{function(*args, **kwargs)}</{tag}>"
return inner_wrapper
return outer_wrapper
for tag, func_name in zip(html_list, func_list):
@mark_html(tag)
def generated_function(title, tag=tag): # tag의 기본값을 설정하여 closure 문제를 해결
return title
globals()[func_name] = generated_function
# 예시 사용 방법:
print(print_1("Hello!"))
print(print_2("How are you?"))
여기서 사용한 핵심 아이디어는:
1. mark_html 데코레이터를 수정하여 원하는 태그를 입력받을 수 있게 했습니다.
2. for 루프 내에서 함수를 정의하고, 그 함수를 globals()를 사용하여 원하는 함수 이름으로 할당했습니다.
3. generated_function 함수 정의에서 tag=tag로 기본값을 설정함으로써 함수 정의 내부에서 tag 변수에 접근할 수 있게 했습니다.
이렇게 하면, 원하시는 대로 동적으로 함수를 생성하고 그 이름을 할당할 수 있습니다.
감사합니다.
강의 자료 어디서 다운받나요? 없는데요..
0
150
1
강의 영상은 안나오고 소리만 나옵니다.
0
177
1
섹션 6 인증 failed 질문
0
153
1
섹션 8 flask 다양한 기능: 다양한 데코레이터 before_first_request 문의
0
358
3
192.168.0.12:8085??
0
154
1
04_flask_ABTest에서 blog_abtest.py 실행 시 오류입니다.
0
171
1
수업내용 질문 건
0
186
1
brew로 mysql 설치 후 서버 실행할 때, 터미널에서 anaconda bin 참조하는 문제
0
663
2
crossorigin 프로퍼티에 대해서 질문드립니다.
0
288
1
강의자료 다운로드 문의드립니다.
1
267
1
갑자기 웹 서버 띄울때 이상하게 나옵니다
0
313
1
가장빠른 Vue와 flask, 그리고 REST API 1 강의 질문입니다. (2)
0
345
1
가장빠른 Vue와 flask, 그리고 REST API 1 강의 질문입니다.
0
321
2
Fast api 추가 강좌 개설여부 질문드립니다!.
0
316
2
flask_cors설치 오류
0
618
2
부스트랩 html 다운
0
257
1
혹시 강의자료 공유가 가능한가요?
0
354
1
소스코드는 어디에 있을까요??
1
254
1
안녕하세요 몇가지 질문이 있습니다.
0
339
1
(강의명) flask 로 Rest API 구현과 테스트 실행 : 오류 문의
0
576
1
백엔드 데코레이터 2 강의에 도전 문제 질문드립니다
0
289
1
몽고 DB 공식홈페이지 403 접속 에러 발생합니다.
1
624
3
04._flask_ABTest Pycharm 에서 실행오류
0
488
1
WinError 10013 ,오류 해결 가능할까요?
0
4106
1





