Python 5

[Python] Python에는 왜 long이 없을까?

Problem 다른 언어에는 존재하는 long이 왜 Python에는 없을까? Solution 기존 Python 2 버전의 경우 int와 long이 구분되어 있었다. int는 C스타일의 고정 정밀도였고, long은 임의 정밀도였다. Python 2.4부터 int가 충분하지 않을 경우 long으로 자동 변환하는 기능이 추가되어 오버플로우가 발생하지 않도록 변경되었다. 이후 Python 3에서 임의 정밀도의 int로 통합되었는데, 임의 정밀도는 무엇일까? 임의 정밀도는 쉽게 말해 무한대의 자릿수를 지원하는 정수형이다. 정수를 숫자의 배열로 취급하기 때문에 가능한데, 말그대로 정수를 자릿수로 쪼개어 2의 30승 진수로 표현한다. ex) 123456789101112131415 (437976919 * 2**(30*..

Python 2022.10.18

[Python] *args 와 **kwargs 란?

Problem 함수 인자로 *args를 사용하는 것과 **kwargs 를 사용하는 것은 각각 무엇을 의미하는 것일까? Solution *args와 **kwargs는 무엇을 의미할까? *args와 **kwagrs는 가변인자를 핸들링하기 위해 사용된다. 파이썬은 JAVA, C++ 등 다른 언어에서 지원하는 형식의 함수 오버로딩을 지원하지 않는다. def add(a): return a def add(a, b): return a+b def add(a, b, c): return a+b+c # error! 대신 다른 방법으로 오버로딩을 구현할 수 있는데, 그 방법 중 한 가지가 바로 *args와 **kwargs를 사용하는 것이다. *과 **뒤에는 원하는 이름을 사용할 수 있다. 가령 *parameter, **lis..

Python 2022.06.27

[Django API] Django + JWT

Problem Django API와 JWT를 연계하여 로그인 시스템 구현하기 Solution 1. djangorestframework-jwt 를 설치한다. pip install djangorestframework-jwt 2. jwt를 import 한 뒤, 로그인과 관련된 로직을 작성한다. 3. 입력한 ID와 PW가 DB의 값과 일치한 경우, 다음과 같이 access_token을 작성하여 response에 포함시켜준다. ALGORITHM = 'HS256'# 알고리즘을 입력. SECRET_KEY = 'secret_key'# 변하지 않는 secret_key를 입력. if match_admin(user_res["user_pw"], admin_info["password"]):# 패스워드가 일치할 경우 access..

Django 2022.04.26

[Python] 두 딕셔너리의 합 구하기

Problem a = {'a': 1, 'b': 2, 'c': 3} b = {'a': 2, 'd': 4} 일때, a와 b를 합친 값 c = {'a': 3, 'b': 2, 'c': 3, 'd': 4} 을 구하고자 한다. 같은 키가 존재하면 연산을, 키가 존재하지 않으면 병합하는 과정이 필요하다. Solution collections.Counter를 사용하면 된다. 단, 모든 value 값은 int 형이어야 한다. from collections import Counter a = {'a': 1, 'b': 2, 'c': 3} b = {'a': 2, 'd': 4} c = Counter(a) + Counter(b) #출력결과 Counter({'a': 3, 'b': 2, 'c': 3, 'd': 4}) 만약 딕셔너리를 ..

Python 2022.02.08