반응형

프로그래밍/Python 13

[Python] 파이썬에서 2의 보수 체계 적용기

01. 문제점 파이썬에서 정수의 저장 02. 해결방법 비트 마스크(Bit Mask) 파이썬 내장 메소드 to_bytes, from_bytes 01. 문제점 컴퓨터 과학 총론을 공부하면서 컴퓨터가 2의 보수 체계를 어떻게 적용하는지 공부했다(여기를 참조) . 이를 파이썬에서 직접 적용시켜 보기로 했는데 난관에 부딪혔다. 파이썬에서 정수를 표현하는 bit 수는 할당된 메모리 크기에 의해 제한되는 것이 아니라 정수의 크기에 따라 유동적으로 변화할 수 있었다. 즉 저장할 메모리의 크기를 직접 할당해 줘야 하는 C언어나 여타 저수준 프로그래밍 언어와 달리, 파이썬에서는 int형를 사용할 때 overflow나 memory leak 같은 memory 관련 문제에 신경 끄고 온전히 프로그래밍에만 집중할 수 있도록 해주..

[Python] 함수 사용법 - (4) collections

Python 내장 모듈인 collections에 대해 알아보자. collections모듈은 기본 컨테이너 객체의 편리성을 더 확장시키는 특별한 컨테이너 데이터 타입들을 모아놓은 모듈이다. 즉, 기본 컨테이너 타입의 확장판. 각종 데이터들의 전처리를 위한 유용한 기능들이 있다. 추가적으로 파이썬에서 컨테이너란, 데이터의 종류에 무관하게 저장이 가능한 객체를 말한다. 해당되는 객체와 아닌 것을 비교해보면 쉬운데 list, dictionary, tuple, dict, str등이 컨테이너 타입이고 반대로 int, float 등은 데이터의 종류가 고정되어 있는 Literal한 타입이다. 실제로 컨테이너 객체 클래스들은 컨테이너 안에 어떤 값이 포함되어 있는지 확인할 수 있는 __contains__ 던더 메소드를 ..

[Python] 의존성 관리툴 poetry

Poetry는 python 의존성 관리 및 패키징을 위한 관리툴로서 프로젝트에 사용하는 라이브러리를 체계적으로 관리할 수 있고 패키지를 PyPI에 쉽게 배포할 수 있는 강력한 도구다. 의존성 관리가 약한 venv모듈의 단점을 해결한 모습을 보여준다. 2018년 2월 21일에 첫 커밋이 올라온 비교적 따끈따끈한 프로젝트인만큼 2023년 5월 현재 1.5버전까지 출시됐고 파이썬 3.7 이상에서만 사용가능하다. 설치 Unix 기반 진영과 Windows 기반 진영의 설치 차이가 있다. Linux, macOS, Windows(WSL, Windows Subsystem for Linux) curl -sSL https://install.python-poetry.org | python3 - 몇몇 시스템에서 Python ..

[DRF] dj-rest-auth - email인증 및 User모델 필드 커스텀하기

지난 프로젝트에서 회원가입 시 이메일을 인증해야 가입이 완료되는 기능을 구현하기 위해 drf의 서드파티인 dj-rest-auth를 사용했다. dj-rest-auth는 로그인, 로그아웃, 비밀번호 재설정, 소셜 미디어 인증 등의 사용자 인증에 관련된 모델을 미리 만들어 둔 프로젝트다. django-rest-framework 라이브러리로 만들어졌으므로 설치되어 있어야 한다 적용방법 # 1. dj-rest-auth 설치 pip install dj-rest-auth # settings.py INSTALLED_APPS = ( ..., 'rest_framework', 'rest_framework.authtoken', ..., 'dj_rest_auth' ) # user/urls.py urlpatterns = [ #...

[Django] 장고 기초 - (5) Query Set(2)

Chapter 06. 장고의 Queryset 2편 (Retrieve 심화) 지난 편에 이어서 QuerySet의 조회에 대한 상세한 내용을 정리했다. 데이터 객체 조회하기 ⅱ(Retrieving objects) 단일한 데이터 객체 조회하기(Retrieving a single object with get()) get() : 단 하나의 데이터 객체만을 조회한다 filter()는 결과가 0개, 1개 혹은 여러개의 QuerySet을 불러올 때 사용할 수 있는 데 반해, get()은 단 하나의 결과 만을 얻어야 할 때 사용한다. get()은 결과가 0개라면 DoesNotExist(결과가 존재하지 않는다)를 발생(raise)시키고, 여러개라면 MultipleObjectsReturned(여러개의 결과가 리턴됐다)를 발..

[Django] 장고 기초 - (4) Query Set(1)

Chapter 05. 장고의 Queryset 1편 (Create와 Retrieve 기초) models.py에서 데이터 모델을 만들면 *데이터 객체를 만들고(create) 검색하고(retrieve) 수정하고(update) 삭제하는(delete) DB추상화 API를 자동적으로 사용할 수 있다. 데이터 객체의 CRUD(Create, Retrieve(Read), Update, Delete)는 Django ORM에서 제공하는 Queryset 자료형(Data Type)을 이용한다. Queryset은 DB에서 전달받은 객체의 목록으로, 구조는 list와 비슷하지만 파이썬의 기본 자료형이 아니므로 읽기 위해선 형변환이 필요하다. * 데이터 객체는 DB의 레코드(record) 혹은 행(row)라고 생각하면 편하다. 데이..

[Django] 장고 기초 - (3) Models

Chapter 04. 모델(Model)에 관하여 앞서 언급한 것처럼 장고의 모델은 DB 테이블을 결정짓는다. 즉, 모델에는 데이터가 저장될 때 어떤 필드에 저장될 것인지, 이 데이터가 저장될 때 어떤 동작을 할 것인지 등이 포함된다. 기초 각 모델은 django.db.models.Model의 서브클래스다 모델의 각 속성(attribute)는 DB의 필드(Field)를 의미한다 모델을 생성하면 Django는 자동으로 생성된 DB엑세스 API(save(), delete() 등)를 제공한다 모델 생성 및 사용 # app/models.py from django.db import models class Person(models.Model): class Meta: db_table = "person" name = m..

[Django] 장고 기초 - (2) Template Language

Chapter 03. 장고의 Template Language 템플릿 언어(Template Language)는 장고 Template에서 사용할 수 있는 특별한 문법이며 템플릿 변수, 템플릿 필터, 템플릿 태그, 템플릿 코멘트가 있다. 템플릿 변수(Template Variable) {{ 변수 }} 중괄호를 두번 열고 닫은 형태로 View에서 템플릿이 렌더될 때 해당 변수가 의미하는 값으로 변환된다. 템플릿 렌더링에서 .(점) 연산자는 lookup(조회)를 나타낸다 템플릿 시스템이 렌더하는 도중 변수 이름에서 점을 발견한다면 다음과 같은 순서대로 lookup을 한다 dictionary - 변수를 사전으로 간주하고 점 뒤에서 Key값 조회 attribute - 변수를 객체로 간주하고 객체의 내부 속성값 조회 혹..

[Django] 장고 기초 - (1) 개요 및 개발 환경 구성

Chapter 01. 풀스택 웹개발 프레임 워크: 장고(Django) Python을 기반으로 만들어진 풀스택 프레임워크로 앱의 재사용성(Reusable App), 플러그인성(Plugability) 등의 철학을 강조한다. 즉, 한번 작성한 코드(앱)를 여기저기 활용하는 것이 가능하다는 것이다. Django는 캔자스시티 로렌스라는 도시에서 출간되는 신문, Lawrence Journal-World의 두 웹 프로그래머가 2003년 만들었으며 개발 당시 Django ReinHardt라는 재즈 기타리스트의 노래를 들으면서 만든 영향으로 이 프레임워크에 Django란 이름이 붙게 되었다. Django는 2021년 Github star 기준 가장 많은 star수를 가진 프레임워크다. 이는 그만큼 많은 사용자들과 이에 ..

[Python] 자료형 특집 - (1) 시퀀스 타입(List/Tuple/Range)

자료형 특집은 기본적인 부분은 최대한 배제하고 내가 몰랐던 부분 위주로 작성하려고 한다 시퀀스타입이란 값이 연속적으로 이어진 자료형이다 Python의 기본적인 시퀀스 타입(Sequence Type)은 세가지가 있다. List/Tuple/Range (문자열 타입은 따로 정리해야 하므로 제외하도록 한다) sequence.index(x[, i[, j]]) sequence안의 x가 (i번 index 이후, j번 index 이전에서) 첫번째로 발견되는 index(위치) 반환 Optional Parameter i : 찾을 인덱스의 시작. search범위에 포함 j: 찾을 인덱스의 끝. search범위에 미포함 아래의 예제를 보자 arr = [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4] # 1 p..

반응형