파이썬 웹 개발 자주 묻는 질문 (2)

str함수, SQLAlchemy의 IntegrityError, 재귀와 반복문 속도에 대한 질문에 현직 개발자가 답했습니다.
Apr 15, 2024
파이썬 웹 개발 자주 묻는 질문 (2)
💡
파이썬과 장고를 활용하여 웹 개발 공부 중이신가요? 파이썬과 장고 공부가 처음이라면 궁금한 점이 많으실 텐데요. 오늘은 5년 차 개발자 신한결 튜터님께서 수강생들이 자주 묻는 질문을 정리하고 답변해 주셨습니다. 내일배움캠프 AI 웹 개발 과정 수강생들이 자주 하는 질문으로, 파이썬 입문자라면 더욱 유익한 정보이니 참고해 보세요.
 
 

Q1. 객체를 출력할 때 <__main__.Member object at 0x1047c5050>과 같은 형식이 나와요. 간단하게 바꿀 수 없을까요?

 
🧑🏼‍🏫 튜터님 답변
클래스에 def init(self) 가 생성자로서 특별하게 작동하듯이, 클래스에 def str(self) 라는 메서드를 추가해서 문자열로 변환할 수 있습니다.
def str(self): return f"Member 인스턴스 : {self.name} {self.username}"
<__main__.Member object at 0x1047c5050> 이 형식은 객체의 기본 표현입니다.
위와 같이 클래스에 str메서드를 추가하면, 해당 클래스의 인스턴스가 str 취급 받을 때 str의 리턴값을 활용하게 됩니다.
 
 

Q2. sqlalchemy.exc.IntegrityError: NOT NULL constraint failed 에러는 무슨 의미인가요?

 
🧑🏼‍🏫 튜터님 답변 (NOT NULL) 이라는 제약(constraint) 이 실패했다는 에러 메시지입니다. 데이터베이스를 사용하시면 앞으로도 자주 마주하게 될 에러인데요. 에러 자체는 "NULL이면 안 되는 SQL Column 에 NULL 값이 들어왔다"라는 뜻입니다.
None값을 SQL에 넣을 때 NULL로 들어가기 때문에, SQL에 데이터를 추가할 때 None값을 넣고 있는지 확인 해보세요.
 
 

Q3. 재귀와 반복문 중 어떤게 더 빠른가요?

 
🧑🏼‍🏫 튜터님 답변
보통 Python 에서는 반복문이 더 빠릅니다!
Python, Java, C 와 같은 명령형 언어에서 재귀는 새로운 함수 호출 스택을 할당해야 하기 때문에 (일반적으로) 반복문에 비해 상당히 오래 걸리고 메모리도 더 많이 사용합니다. 다만 C언어는 코드를 바로 실행하지 않고 컴파일러라는 친구가 코드를 고친 이후에 어셈블리언어로 변경합니다. 그래서 C 컴파일러가 알아서 재귀를 풀어서 반복문으로 만든 후 실행할 수도 있습니다. 이런 경우는 반복문과 재귀가 동일한 속도로 실행될 수 있습니다. 반대로 함수형 프로그래밍 언어 구현에서 반복은 매우 비싸고 재귀는 매우 저렴할 수 있습니다.
 
보통 함수형 언어에서 재귀는 단순한 점프로 변환되지만, 멀티 스레드 환경에서는 가비지컬렉터와 공유 메모리 간의 상호 작용으로 인해 비용이 더 들 수 있습니다. 요컨대, 정확한 답은 "코드와 구현에 따라 다르다" 입니다. 함수형 언어를 사용하는 경우 재귀가 더 빠를 수 있습니다. 명령형 언어를 사용하는 경우에는 반복이 더 빠를 수 있습니다. 일부 환경에서는 두 가지 방법 모두 동일한 어셈블리가 생성될 수 있습니다.
 
 
 

웹 개발에 AI 역량을 더하고 싶다면? 내일배움캠프 AI 트랙에 합류하세요

내일배움캠프의 AI 트랙에서는 웹 개발 역량에 AI 기술을 접목하여 웹 개발, 머신러닝 등 다양한 분야에 도전할 수 있습니다. 파이썬과 장고로 웹 개발 기술을 배우고, 머신러닝 라이브러리와 ChatGPT API를 활용하여 프로젝트를 진행합니다. 현업 웹 개발자와 머신러닝 개발자의 피드백을 받으며 실제 유저 서비스 출시까지 경험할 수 있어 차별화된 포트폴리오를 갖출 수 있습니다. 내일배움카드만 있다면 이 모든 과정에 무료로 참여할 수 있습니다. 내일배움캠프 AI 트랙과 함께 채용 시장에서 주목받는 지원자로 거듭나세요.
 
 
 
CREDIT
답변 | 신한결 내일배움캠프 AI 웹 과정 튜터 편집 | 정효재 팀스파르타 에디터
 
Share article
Subscribe Newsletter
Stay connected for the latest news and insights.
RSSPowered by inblog