언어/Python

매직 메소드 (Magic Method)란? 매직 메소드 혹은 스페셜 메소드라고 불리며, 메소드의 양쪽을 두 개의 언더스코어(__)로 감싼 메소드를 말한다. 일반적으로 파이썬의 클래스 내에 내부적으로 구현되어 있다. 매직 메소드를 적절히 사용하면 클래스를 보다 폭넓게 사용할 수 있고, 사용자가 직접 만든 클래스를 마치 파이썬의 내장 클래스처럼 사용할 수 있다. 아마 파이썬을 사용하며 가장 처음 접하거나 구현하는 매직 메소드는 __init__() 혹은 __str__() 일 것이다. __init__() 해당 메소드는 파이썬 클래스의 인스턴스를 생성할 때 자동으로 호출되며, 일반적으로 인스턴스 생성과 함께 인스턴스 변수를 선언하기 위해 사용된다. class Person: def __init__(self): pr..
아스키코드란? 미국정보교환표준부호(영어: American Standard Code for Information Interchange), 또는 줄여서 ASCII( /ˈæski/, 아스키)는 영문 알파벳을 사용하는 대표적인 문자 인코딩이다. 아스키는 컴퓨터와 통신 장비를 비롯한 문자를 사용하는 많은 장치에서 사용되며, 대부분의 문자 인코딩이 아스키에 기초를 두고 있다. - 위키백과 쉽게 말해 아스키코드는 알파벳을 비롯한 문자들을 통신하기 위해 일대일 대응시켜 숫자로 정해둔 코드이다. 아스키코드 테이블은 다음과 같다. 물론 이 표를 다 외우고 있을 필요는 없다. 파이썬에서는 ord()와 chr() 함수를 통해 문자를 아스키코드로, 아스키코드를 문자로 변환할 수 있다. print(ord("A")) print(o..
In CPython, the global interpreter lock or GIL is a mutex that protects access to Python objects, preventing multiple threads from executing Python bytecodes at once. The GIL prevents race conditions and ensures thread safety. CPython에서 global intertreter lock(GIL)은 멀티 스레드가 파이썬 바이트코드들을 동시에 실행시키는 것을 막으며 파이썬 object에 대한 접근을 보호하는 뮤택스이다. GIL은 경쟁상태(race condition)을 예방하고 thread-safety를 보장한다. https://wi..
파이썬의 heapq 라이브러리를 통해 손 쉽게 최소힙과 최대힙을 구현할 수 있다. 우선, heapq는 기본적으로 최소힙으로 구현되어있다. 즉, heapq의 heappush를 통해 값들을 삽입하면 해당 값들은 숫자가 가장 작은 순서대로 트리 구조로 값이 저장된다. heapq의 연산을 사용하기 위해선 각 연산의 파라미터로 큐로 사용할 리스트와 원소를 넘겨주면 된다. 1. heappush - 값 추가 import heapq heap_q = [] heapq.heappush(heap_q, 3) heapq.heappush(heap_q, 10) heapq.heappush(heap_q, 1) heapq.heappush(heap_q, 0) heapq.heappush(heap_q, 4) print(heap_q) # [0,..
파이썬은 집합(고등수학에서 배우는 그 집합)을 처리하기 위한 자료형 set을 제공한다. 집합 자료형은 set()으로 선언하며, 안에 들어갈 원소들을 리스트 형태로 넘겨주면 된다. data = set([1, 4, 9, 11, 3]) print(data) # {1, 3, 4, 9, 11} 집합 자료형의 특징은 크게 두 가지가 있다. 중복값을 허용하지 않는다. 원소들 간 순서가 정해져있지 않다. 중복값을 허용하지 않기 때문에 동일한 값의 원소를 여러 개 넣더라도 집합 안에는 하나의 원소만 남게된다. data = set([1, 4, 4, 4, 9, 11, 3]) print(data) # {1, 3, 4, 9, 11} 순서를 갖지 않기 때문에 리스트처럼 인덱싱하는 것이 불가하다. data = set([1, 4, ..
알고리즘 문제를 풀다가 알게된 함수로, 꽤 유용하다고 생각하였으나 역시나 얼마 동안 안쓰니 다 까먹어버려 다시 한 번 정리하고자 글을 남긴다. Counter 함수는 deque를 지원하는 collectinos 모듈을 통해서 이용 가능하다. from collectinos import Counter 따라서 다음과 같이 위에서 import 해온 후 사용 가능하다. Counter 함수는 특정 문자 혹은 원소의 갯수를 세어 딕셔너리 형태로 리턴 해주는 함수이다. from collections import Counter my_text = "Hello,World!" my_counter = Counter(my_text) print(my_counter) 보다시피 각 문자에 대한 갯수를 올바르게 출력해온 것을 알 수 있다...
예전에 지금보다 더 코린이일 때, 카카오 코딩테스트 기출문제를 호기심에 풀어보다가 첫 문제부터 막힌 기억이 생생하다. 정답률이 무려 80%가 넘는 쉬운 문제였는데, 우리가 흔히 사용하는 10진수의 숫자를 2진수 형태로 바꿔주면 바로 풀 수 있는 간단한 문제였다. 물론 내가 부족하다는 게 가장 주된 이유이지만, 함수를 모른다는 이유로 문제를 풀지 못하면 꽤 억울하다. 그 때의 억울함을 추억하며 이 내용을 정리해보자. 파이썬의 공식 문서에 등록되어 있는 bin()의 사용법은 다음과 같다. 어려운 내용이 아니다. 정수형 숫자를 파라미터로 bin(x)에 넘겨주게 되면, 해당 숫자에 맞는 2진수 숫자를 리턴해준다. print(bin(10)) 10을 2진수로 바꿔주면 다음과 같은 결과가 출력된다. 재미있는 점은 이..
파이썬에서 반복문을 이용할 때는 상황에 맞게 while문과 for문을 이용한다. 하지만 반복문이 돌아가는 와중에, 특정 조건에서는 해당 반복문이 제어되길 바라는 상황이 있을 수 있다. 그 때 알아둬야할 것들이 continue, pass, break 이다. 1) continue continue는 특정 조건이 올때 반복문을 한 회 건너뛴다. 특정 조건 즉, i ==5 일때 한 회만 for문이 건너뛰어진 것을 확인할 수 있다. 2) pass 파이썬의 함수나 표현들이 영어 표현과 매우 비슷하다는 점에서, continue와 pass가 처음엔 약간 헷갈릴 수도 있다. 하지만 pass와 continue는 사용목적 자체가 다르다. continue의 경우 특정 조건 시 반복문을 건너뛰기 위한 것이라면, pass는 개발 ..
SeongOnion
'언어/Python' 카테고리의 글 목록