Python 3.10이 업데이트되면서 변화되거나 추가된 사항들이 있다.
match / case
패턴 매칭은 C 언어에서 제공하는 switch/case 문과 유사하다. 하지만 패턴이 일치하면 해당 구문을 실행한 후, break 없이도 match문을 빠져나간다.
a = 50
match a:
case 50:
print("50")
case 100:
print("100")
case _:
print("Nothing")
# Output: 50
마지막 case _ 는 일치하는 값이 없을 때, 실행하는 구문이다. 만약 case _ 를 선언하지 않으면 아무 실행 없이 match 문을 종료한다.
num = 1, 2
match num:
case x,:
print(f"{x},")
case x, y:
print(f"{x}, {y}")
case x, y, z:
print(f"{x}, {y}, {z}")
case _:
print("None")
# Output: 1, 2
선언되지 않은 변수를 사용하는 것도 가능하다.
num = 1, 2, 3, 4
match num:
case x,:
print(f"{x},")
case x, y:
print(f"{x}, {y}")
case x, *ys:
print(x, *ys)
case _:
print("None")
# Output: 1 2 3 4
언패킹을 사용하는 것도 가능하다.
letter = 'f'
match letter:
case ('a'|'b'|'c'):
print("a or b or c")
case ('d'|'e'|'f'):
print("d or e or f")
case _:
print("None")
# Output: d or e or f
| 를 이용해 or 연산도 사용 가능하다.
num = 30
match num:
case i if 0 < i < 10:
print(i, ": 0 < i < 10")
case i if 10 < i < 50:
print(i, ": 10 < i < 50")
case _:
print("None")
# Output: 30 : 10 < i < 50
if문을 이용해 패턴을 생성할 수도 있다.
객체의 자료형 선언
def func(para: int | str) -> int | float:
pass
isinstance(100, int | float)
기존에 Union을 활용해 자료형을 선언하던 것을 | (or) 연산을 활용해 작성할 수 있다.
from typing import TypeAlias
Factors: TypeAlias = list[int]
def func() -> Factors:
pass
TypeAlias는 사용자가 세부적인 타입을 생성할 수 있도록 한다.
Context Manager
with (
open("file_1.txt", "r") as f1,
open("file_2.txt", "r") as f2,
open("new_file.txt", "w") as f3,
):
pass
여러개의 with 구문을 작성할 때 ( )를 이용해 묶어주어야 한다.