본문 바로가기

전체 글

(28)
while 순환보다 for 순환 사용하기 가능하다면 파이썬다운 순환인 for item in iterable을 사용하는 것이 좋다. 순환을 작성할 때 for와 while 중 선택해야 하는 경우가 종종 있다. 물론 두 가지 모두 사용할 수 있다. 사용하는 언어가 무한 반복자(iterable)을 가지고 있다면 for만 사용해도 충분하다. while과 for 사이의 형식적 동일성에도 불구하고 일반적으로 while 순환보다 for 순환이 더 파이써닉하다고 느껴진다. 물론 많은 예외가 있지만 파이썬에서 순환을 사용할 때는 거의 전부라 해도 좋을 정도로 컬렉션이나 생성기 함수 (Generator Function), 생성기 순환 표현식 (Generator Expression), 사용자 정의 반복 가능 클래스와 같은 반복 가능 객체 사이를 순환하는 경우가 대부..
순환 중 객체 변형 순환 중인 객체를 변형시키면 안된다. 때로는 잘못된 결과가 발생하지 않고 순환을 벗어날 수도 있지만, 그래도 안좋은 습관이다. 여기서 주목해야 할 점은 일부 파이썬 객체가 불변(immutable)이라는 것이다. 예를 들어 str, bytes, tuple, frozenset 객체를 순환하는 경우 기본 컬렉션이 변형되는 문제가 발생하지 않는다. 그럼에도 불구하고 많은 파이썬 객체들은 가변(mutable)임과 동시에 반복 가능하다. 대표적으로 list, dict, set, bytearray 등이 있다. 순환 중인 객체를 변형시키려고 하면 여러 가지 면에서 문제를 일으킬 수 있다. my_set = {'h','e', 'l', 'l', 'o'}my_set = set(my_set)for i in my_set: ..
dict.key()로 순환하지 않기 dict.items()가 필요할 경우 dict.keys()로 순환하지 않기파이썬의 목록과 색인 위치와 값의 사상(mapping)을 거의 동일시하는 경우가 있다.더보기파이썬에서 "사상"이라는 용어는 일반적으로 "mapping" 또는 "association"의 의미로 사용됩니다. 이 개념은 특정 집합의 원소들 간의 관계를 정의하는 것입니다. 파이썬에서는 사상(mapping)을 보통 딕셔너리(dictionary)와 같은 데이터 구조로 구현합니다.여기서 색인 위치와 값의 사상을 거의 동일시하는 경우는, 목록(list)와 그 인덱스 간의 관계를 의미합니다. 목록(list)은 인덱스와 값 간의 직접적인 사상을 제공합니다. 즉, 목록의 각 인덱스는 해당 인덱스에 위치한 값을 가리킵니다. 이 경우, 인덱스는 사상의 "..
색인을 순환하는 대신 enumerate 사용하기 C에서 파생된 언어를 사용하는 개발자들은 목록이나 다른 데이터 구조를 순환할 때 대부분 색인 요소를 사용하는 경향이 있다. 하지만 이것은 일반적으로 파이썬답지 않은 순환 방법에 해당한다. 아래와 같은 코드는 일반적으로 코드의 악취로 간주된다.for i in range(len(items)): process(i, i[i]) 순환안에서 색인 위치를 전혀 사용할 필요가 없는데도 불구하고 색인을 사용하는 것은 좋은 방법이 아니다. 더 관용적인 사용 방식은 아래와 같이 단순하다.for i in items: process(None, item) 색인과 그에 연결된 항목을 모두 사용하는 경우가 비교적 흔한데, 이 경우 enumerate 함수를 사용하는 것이 훨씬 관용적이고 직관적이다.for i, idx in enumer..
Django full text search (Gin index) Django 검색 쿼리 개선(Gin index) django에서 Q객체를 이용하여 검색 기능을 구현하였다. 검색어가 게시물의 제목(title)과 내용(description)에 있다면 검색이 되어야 한다. # views.py def get_queryset(self): q = self.request.query_params.get("search") queryset = ( CrawlingData.objects.annotate( fast_count=( Count( "emotion", filter=Q( emotion__emotion_type="F", emotion__is_deleted=False, ), ) ), is_bookmark=( Exists( self.request.user.bookmark_set.filte..
Django csv파일 다운로드 Django Export csv(zip, base64) django에서 csv 파일로 내보내기 django에서 db에 저장되어 있는 값들을 csv로 변환해서 다운로드 할 수 있도록 하는 것을 목표로 한다. Molecular 테이블에 model_output 필드에는 문자열이 저장되어 있다. # views.py def get(self, request, *args, **kwargs): files_name = Molecular.objects.filter(id=1).first().model_output["simul_plus"].keys() files_name_s = Molecular.objects.filter(id=1).first().model_output["custom_model"].keys() field_na..
Django Admin 커스텀 Django Admin 커스텀 매뉴얼 목적 💡 장고 관리자 커스텀을 보다 쉽게 진행을 위해 매뉴얼화 합니다. 간단한 요약 장고 관리자 커스텀 관련 내용 장고 관리자 커스텀 관련 전반적인 내용이 담겨있습니다. 문서 내용 목록 Admin에 모델 등록하기 관리자 페이지에 모델을 등록하는 방법 커스터마이징 옵션 관리자 페이지의 커스텀 옵션별 정리 커스터마이징 메소드 관리자 페이지의 메소드별 사용 방법 CSS, JavaScript 재정의 관리자 페이지의 CSS, JavaScript 사용자 지정 추가 필드에 커스텀 위젯 적용 관리자 페이지에서 사용하는 필드(fields)의 커스텀 위젯 적용 방법 Admin Temlate 재정의 관리자 페이지 사용자 지정 Template 사용 방법 Admin 목록 페이지(ListVi..
python 네이버 금융 웹 스크래핑 웹 스크래핑 3 네이버 금융 스크래핑 네이버 주식 페이지에서 순위별로 각각의 콘텐츠들을 뽑아오는 것을 목표로 스크래핑하였다. 먼저 저번과 마찬가지로 이 웹페이지는 JS로 구성되어있기 때문에 개발자 도구 network 탭에서 이 페이지 접속할 때 받는 특정 response를 이용해서 cURL을 복사한다. 그 후 https://curl.trillworks.com/ 에서 cURL을 Python requests로 변환해준다. import requests headers = { 'authority': 'finance.naver.com', 'cache-control': 'max-age=0', 'sec-ch-ua': '"Google Chrome";v="89", "Chromium";v="89", ";Not A Brand..