결론은 이것만 보시면 되고 나머지는 Skip 해도 됩니다. Python 3.14 기본 빌드는 GIL이 그대로 존재한다. 다만 GIL 없는 빌드(python3.14t)가 별도로 함께 공개되었으며, 실험 단계에서 공식 지원 단계로 승격되었다. "Python 3.14에서 GIL이 사라졌는가?"라는 질문에 한 문장으로 답한다면 → "공식 옵션은 생겼다. 다만 디폴트는 아직 아니다. 디폴트로 바뀌는 시점은 3.17~3.18쯤이 유력하다"가 핵심이다. 쉽게 비유하면 이런 식이다. 식당에 "매운맛 옵션" 메뉴가 새로 생긴 것이다. 매운맛을 끄려고(= GIL 없애려고) 일부러 그 메뉴를 주문하면 가능하다. 다만 그냥 "기본 메뉴"(= python3.14)를 주문하면 예전 그대로 매운맛이 들어있다. 둘 다 같은 식당에서..
하루가 멀다하고 기초를 더 다져야겠다고 생각하면서도 느슨해진게 없지않아 있었다. Python 코드 품질에 대해 더 심층있고 공부하고 정리하고 싶어 정리하였다. 아래 링크를 타고 들어가보자 https://everytown.co.kr/index.html https://everytown.co.kr/index.html License This document is licensed under a creative-commons NC license, so you can use the text freely for non-commercial purposes and adapt it to your needs. The only thing we ask in return is the inclusion of a link to thi..
개요 파이썬 클래스를 사용할때 __str__ 또는 __repr__ 정의하고 사용할 때가 많다. 시간이 없고 바빠서 빼놓고 코딩할 때도 있긴하지만 정의를 해두고 사용하면 디버깅을 하거나 출력할때 유용하게 사용할 수 있다. 이 둘은 비슷해 보이지만 목적과 사용 시점에 따라 약간의 차이점을 가질 수 있다. __str__ vs __repr__ __str__ "사람이 읽을 수 있는" 친화적인 형태의 문자열 표현식이다. 사용자가 객체를 문자열로 변환하거나 print() 함수로 출력할 때 호출된다. __str__ 메서드가 정의되지 않은 경우, 파이썬은 대신 __repr__ 메서드를 호출한다. __repr__ "개발자용"의 디버깅 용도로 작성된 문자열 표현식이다. 개발자가 객체를 재생성하거나 디버깅할 때 유용한 정보를..
데코레이터란? 어떤 함수를 받아 명령을 추가한 뒤 이를 다시 함수의 형태로 반환하는 함수. 어떤 함수의 내부를 수정하지 않고 기능에 변화를 주고 싶을 때 사용한다. 말그대로 다른 함수를 꾸며주는 함수이다. 데코레이터 구조 def 데코레이터이름(func): def 내부함수이름(*args, **kwargs): 기존 함수에 추가할 명령 return func(*args, **kwargs) return 내부함수이름 예) 피보나치 수열 from collections import defaultdict def recursive(func): result = defaultdict(int) def wrapper(n): if n in result: return result[n] result[n] = func(n) return..
functools.reduce( function , iterable [ , initializer ] ) 이터레이터를 왼쪽에서 오른쪽에서 순차적으로 누적하여 적용할때 사용합니다. 예를 들어 x는 누적된 값이고 y는 업데이트 되는 값입니다. from functools import reduce reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) # result ((((1+2)+3)+4)+5) = 15 functools.cmp_to_keyfunctools.cmp_to_key( func ) 비교 함수를 주요 함수로 사용합니다. 비교 함수는 두 개의 인수를 받아 비교하고, 보다 작으면 음수, 같으면 0,보다 크면 양수를 반환하여 사용합니다. from functools import cmp_to..
startswith 접두어 부분 매칭 여부를 판단할때 매우 유용하다 str = 'Hello world!' print( str.startswith( 'Hello' ) ) # True print( str.startswith( 'He' ) ) # True str = 'Hello world!' print( str.startswith( 'll' ) ) # False print( str.startswith( 'll', 2 ) ) # True str = 'Hello world!' print( str.startswith( 'Hell', 0, 3 ) ) # False print( str.startswith( 'Hell', 0, 4 ) ) # True endswith 접미어 부분 매칭 여부를 판단할때 매우 유용하다 pri..
정의 Counter 는 dict 해시 가능한 개체를 계산하기 위한 하위 클래스입니다. 요소가 사전 키로 저장되고 개수가 사전 값으로 저장되는 컬렉션입니다. __init__ : 생성 빈 객체로 생성 string 인자로 생성 dict 인자로 생성 keyword argument 인자로 생성 # 빈 객체로 생성 c = Counter() # string 인자로 생성 c = Counter('gallahad') # dict 인자로 생성 c = Counter({'red': 4, 'blue': 2}) # keyword argument로 생성 c = Counter(cats=4, dogs=8) # result Counter() Counter({'a': 3, 'l': 2, 'g': 1, 'h': 1, 'd': 1}) Coun..
Anaconda 다운로드 (https://www.anaconda.com/download/) 페이지에 접속하여 다운로드 받는다. (Python 3.6 version 다운로드) 마우스 오른쪽 버튼을 클릭하여 관리자 권한으로 파일 실행한다. Next 버튼을 클릭한다. I Agree 버튼을 클릭한다. 모든 유저 권한을 체크하고 Next 버튼을 클릭한다. 설치할 디렉토리를 선택한다. 필자는 C 드라이브에 SSD가 꽂아져있으므로 C 드라이브에 설치한다. (IDE 툴 사용시 읽기 쓰기가 빠르므로) Install을 클릭하여 설치를 진행한다. 가상 환경을 사용할 것이므로 환경변수 체크는 별도로 하지 하지 않는다. (실제 설치시에도 권장하지 않는다.) Anaconda 설치 완료
