패킹이란?
한 변수에 여러개의 데이터를 할당하여, 여러개의 객체를 하나의 객체로 합쳐주는 것 -> 묶는다!


*를 활용하면 나머지 요소를 언패킹 한다


함수가 임의의 개수의 인자를 받아들일 수 있도록 도와줌
*args는 여러개의 위치 인자를 튜플로 받고

**kwargs는 키워드 인자를 딕셔너리로 받는다


[A-Z], [0-9] 등 직접 문자를 지정 해도되지만 자주쓰기에 예약어처럼 줄여 쓸수있는것도 있다 자주 \d \s 등을 많이 쓴다.

\d+(?=년)
2024년
2025년
2026년
이렇게 하면 숫자만 찾을 수 있다

\d+(?<=년)

...이 아닌것만 매치 된다는 뜻

반복 위에 ?를 사용하면 횟수가 한 번 으로 제한됨.
정규표현식을 컴파일하여 패턴 객체를 반환한다.
문자열의 청므부터 정규표현식과 매치되는지 조사

import re
# 정규표현식을 컴파일하여 패턴 객체를 반환
pattern = re.compile(r"\w")
# 문자열의 청믕부터 정규표현식과 매치되는지 조사
match_result = pattern.match("Hello world")
print(match_result)
print("Match: ", match_result.group() if match_result else "No match")
import re
# 정규표현식을 컴파일하여 패턴 객체를 반환
pattern = re.compile(r"\b\w+\b")
# 정규표현식과 매치 되는 모든 문자열을 리스트로 돌려줌
finditer_result = pattern.findall("Hello world")
print("find all:", finditer_result)
# 정규표현식과 매치되는 모든 문자열을 반복 가능한 객체로 돌려줌
finditer_result = pattern.finditer("Hello world")
print("Find iter:")
for match in finditer_result:
print(f" - {match.group}")
출력값
find all: ['Hello', 'world']
Find iter:
- <built-in method group of re.Match object at 0x0000023D252388C0>
- <built-in method group of re.Match object at 0x0000023D25238940>


살면서 수많은 선택에 기로에 놓이는데 특정 무언가를 반영하냐 안하냐에 따라 결과가 달라진다면 체크 포인트가 필요할것이다 개발에 있어서 그중 대표적인
Git을 배워보자






Hash란?
컴퓨터에서 나온다면 빠르다! 라고 이해하면 된다 메모리를 포기하고 속도를 얻었다라고 보면 된다.해쉬가 가능하려면 값이 고정적이여야함 변하면 안됨


※ 겁나 중요 : age_dict = {'나':27, '엄마' : 69}
age_dict.get('아빠') => 에러는 안남
age_dict['아빠'] => 에러!

자주쓴다 "아빠" in "아빠엄마" => True



세트 중복 불허, 순서를 띄지 않는다 그리하여 단일 값들을 가진다.




우리가 아는 집합과 동일하다
