Python 3

python - from A import B와 import A.B as b의 차이

과거 모듈 내 객체를 싱글톤처럼 사용하려던 기억이 있었는데, 이 둘의 차이를 구분하지 못해 고생했던 기억이 있다.이번 기회에 글로 정리해두었다.하나씩 알아보자.시작하기 전에 - 모듈, 패키지, 라이브러리모듈모듈은 파이썬 파일을 의미한다.특히 다른 파이썬 프로그램에서 import하여 사용하는 것을 가정하고 만들어진 파이썬 파일을 '모듈'이라 한다.모듈은 import 시 sys.modules 딕셔너리에 보관되게 된다.패키지패키지는 여러 모듈을 묶은 것이다.패키지를 만들려면 먼저 디렉터리를 만들고, 그 안에 모듈과 __init__.py 파일을 추가한다.라이브러리라이브러리는 여러 패키지를 묶은 것이다. 그래서 하나 이상의 디렉터리로 구성된다.때로는 패키지를 가리켜 '라이브러리'라고 부르기도 한다.import 동..

python 애스터리스크(*) - 언패킹의 역할과 예제

파이썬에는 애스터리스크가 포인터도 아닌 것이 특이한 일을 하고 있어, 이 코드를 처음 보면 당황하기 부지기수이다.파이썬의 애스터리스크 기호의 사용법에 대해 자세히 알아보자.대입 언패킹함수 호출 시 언패킹리터럴 내부 언패킹대입 언패킹 (Extended Iterable Unpacking, PEP 3132)오른쪽 이터러블을 왼쪽 변수들에 “펼쳐” 넣는다.*가 붙은 변수는 나머지 전부를 리스트로 받는다.*는 각 패턴 레벨에서 최대 1개만 허용된다.a, *rest = [10, 20, 30]*head, b = (1, 2, 3, 4)x, *mid, y = range(5) * 변수는 항상 리스트가 된다.(튜플 아님).최소 길이만 맞으면 남는 요소가 0개여도 동작한다(그 경우 빈 리스트 ([])가 됨).a, *res..

Python - zip의 역할과 예제

파이썬의 zip()은 여러 이터러블(리스트, 튜플, range 등)을 같은 인덱스끼리 묶어 튜플들의 이터레이터를 만든다.핵심 특징게으른 이터레이터결과를 한꺼번에 만들지 않고 필요할 때마다 생성함 → 메모리 절약.가장 짧은 길이 기준으로 끝남.개수 제한 없음zip(a, b, c, ...)처럼 여러 개를 동시에 묶을 수 있음.언패킹으로 ‘되돌리기’zip(*pairs)로 다시 열 단위로 분리함.길이 검사 옵션zip(a, b, strict=True)로 길이가 다르면 ValueError 발생(PEP 618, Python 3.10+).예제 모음1) 기본 사용nums = [1, 2, 3]chars = ['a', 'b', 'c']pairs = list(zip(nums, chars))2) 병렬 반복a = [10, 20,..