타입 힌트 붙이기 시작한 지 얼마 안 됐는데 제가 계속 잘못 알고 있었던 것 같아서요.
저는 Optional 이라는 단어 보고 당연히 "이 인자는 생략 가능하다" 이런 뜻인 줄 알았어요. 그래서 이렇게 썼거든요.
def greet(name: Optional[str]):
print(f"안녕 {name}")
greet()
당연히 그냥 greet() 하면 될 줄 알았는데 인자 안 넣으니까 그대로 TypeError 나면서 name 빠졌다고 뭐라 하네요. 생략 가능하다며... 근데 또 name=None 이렇게 직접 넣으면 잘 돌아가요.
그러면 Optional 이라는 게 대체 뭘 의미하는 거예요? 생략이랑 상관없으면 왜 이름이 Optional인 건지도 헷갈리고요. 그리고 검색하다 보니까 어떤 사람은 str | None 이렇게 쓰던데 이게 Optional[str]이랑 같은 건가요? 요즘은 typing 에서 List 이런 거 안 쓰고 그냥 list 쓴다는 얘기도 봤는데 이것도 좀 정리해주시면 감사하겠습니다.