본문 바로가기

분류 전체보기17

Django 쿼리셋 특징 - Lazy Loading 장고는 ORM(Object Relational Mapping)을 이용해 데이터를 관리한다. ORM이란 객체와 관계형 데이터베이스를 연결해주는 작업이라 할 수 있는데, 객체를 클래스로 표현하는 것과 같이 관계형 데이터베이스를 객체처럼 쉽게 사용할 수 있도록 해준다. ORM 덕분에 편하게 db에 접근해 개발할 수 있지만, 반대 급부에 있어 단점은 쿼리가 어떻게 요청되는지 알 수 없어 성능 저하의 문제 발생할 수 있다는 점이다. 이렇게 발생하는 ORM의 단점이 지연 로딩(Lazy-Loading)이다. 지연 로딩이란 단순히 쿼리문이 작성되어있다고 해서 쿼리를 날리는 것이 아니라, 최종적으로 데이터가 필요한 시점에서 쿼리를 날려 데이터베이스에서 데이터를 가지고 오는 것을 의미한다. books = Book.obje.. 2022. 11. 7.
파이썬 itertools 모듈 코딩을 하다보면 array, tuble, dictionary 등의 이터러블을 다뤄야 하거나 동일한 동작을 반복적으로 수행해야하는 경우가 많은데, 이 경우 유용하게 이터레이터를 생성할 수 있는 게 파이썬의 itertools 모듈이다. 0. 이터러블과 이터레이터 이터러블(iterable)이란 반복 가능한 객체를 의미하며, 이터레이터(iterator)란 이터러블에서 값을 생성해낼 수 있는 객체를 의미한다. 파이썬 내장함수 중 iter()를 사용해 이터러블을 인자로 하여 이터레이터 객체를 만들어 낼 수 있고, next()를 이용해 이터레이터를 호출하면 이터러블의 요소를 차례대로 꺼낼 수 있다. 어떤 타입의 객체가 이터러블인지 확인하는 가장 쉬운 방법은 iter()의 인자로 해당 객체를 전달하는 것이다. 이터러블.. 2022. 10. 18.
문자열의 구성(숫자, 알파벳) 판별 파이썬에는 주어진 문자열에 대해 문자열이 어떻게 구성되어 있는지(숫자 형태의 문자열인지, 알파벳으로 이루어진 문자열인지, 숫자와 알파벳으로만 이루어진 문자열인지...) 판별하는 함수들이 존재한다. 참고로 아래의 함수들 모두 공백이 포함되어 있을 때 False를 반환한다. - 숫자 판별 isdecimal() : 주어진 문자열이 정수 형태인지, 즉 해당 문자열이 숫자로만 이루어져 있는지를 판별한다. isdigit() : 주어진 문자열이 숫자 형태인지 판별한다. isnumeric() : 주어진 문자열이 숫자값 표현에 표현에 해당하는지 판별한다. test = ['1', '3²', '½', '2.1', ''] list(map(lambda x : x.isdecimal(), test)) >>> [True, False.. 2022. 10. 12.
람다 함수(Lambda Function) 파이썬에서는 람다함수를 통해 이름이 없는 일회용 함수를 만들 수 있다. 함수를 이름을 정의해 선언하면 해당 함수를 재사용 가능하다는 이점이 있지만, 역으로 함수 객체에 메모리가 할당되기 때문에 일회용 함수에 대해서는 굳이 불필요한 메모리를 낭비할 필요가 없을 것이다. 람다함수를 이용하면 코드를 간결하게 작성 가능하며, 메모리도 절약할 수 있다는 이점이 있다. 그러나, 나는 유독 람다함수 문법이 어려워 그 사용법을 정리해보았다. - 람다함수 기본 문법 람다함수를 생성할 때는 일반 함수를 생성할 때와 달리 def 키워드나 return 키워드가 불필요하다. lamda라는 키워드만으로 함수를 생성할 수 있다. lambda 매개변수 : 결과 입력받은 인자에 대해 1을 더해 반환해주는 람다함수 lambda x : .. 2022. 10. 12.