값이 없음을 표현하고 정확하게 검사합니다.
None은 아직 값이 없거나 결과가 없음을 나타내는 하나의 특별한 객체입니다. 0, False, 빈 문자열과 의미가 다릅니다. None 비교에는 ==보다 is None과 is not None을 사용합니다.
discount가 None이므로 is None 검사가 참이 되어 할인 정보가 없습니다.가 출력됩니다. else 쪽의 f-string은 discount가 숫자일 때만 실행되며, 형식 지정자 .0%가 0.15 같은 값을 15%로 바꿉니다. None에 이 형식을 적용하면 TypeError가 나므로, 형식화보다 None 검사를 먼저 둔 순서가 오류를 막아 줍니다.
함수가 return을 만나지 않고 끝나면 None을 반환합니다. 선택적인 값은 사용하는 쪽에서 None인 경우를 명시적으로 처리해야 합니다.
없음, 빈 값, 0을 도메인에서 구분해야 데이터 손실과 잘못된 기본값 적용을 막을 수 있습니다.
if not value는 None뿐 아니라 0과 빈 문자열도 참으로 판단하므로 정확한 구분이 필요할 때 쓰지 마세요.
직접 바꿔보세요discount가 0인 경우와 None인 경우를 각각 출력하도록 바꿔보세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.