mapping.get()
는 '기본'인수를 지원합니다
os.environ.get("CDO_TBLPATH", '')
기본값은 None
을 반환하지만, 빈 문자열을 지정하여 연결은 CDO_TBLPATH
가 정의되지 않은 경우에도 작동합니다.
.get()
이없는 경우 병합으로 마법을 사용하여 None
을 반환 할 수 없습니다. __add__
메서드에서 None
을 반환하는 사용자 지정 클래스를 사용할 수는 있지만 매우 읽기 쉽지는 확실하지 않습니다.
당신이 환경 변수가 정의되지 않은 경우 (연결할되지 않음) 옵션을 생략해야하는 경우, 오프 분할 밖으로 시험 좋을 것 : 이것은 일련의 테스트를 정의
table_options = (
(lambda: iTBLFilePath, lambda: iTBLFilePath)
(lambda: os.environ.get("CDO_TBLPATH") and os.environ.get("CDO_INSTANCE_TYPE"),
lambda: os.environ["CDO_TBLPATH"] + os.environ["CDO_INSTANCE_TYPE"] + '.tbl'),
(lambda: os.environ.get("CDO_ROOT") and os.environ.get("CDO_INSTANCE_TYPE"),
lambda: os.environ["CDO_ROOT"] + "/cdo/tbl/" + os.environ["CDO_INSTANCE_TYPE"] + ".tbl"),
(lambda: True, lambda: None),
)
self. _TBLFilePath = next(opt() for tst, opt in table_options if tst())
, 성공한 첫 번째 테스트와 관련된 값이 사용됩니다.
죄송합니다, 내 질문에 조금 혼란 있다면. 실제로 달성하고 싶은 것은 두 번째 피연산자 (os.environ.get ("CDO_TBLPATH") + os.environ.get ("CDO_INSTANCE_TYPE") + ".tbl")는 해당 env 중 하나의 경우에 False/None을 반환한다는 것입니다. 변수가 설정되지 않았습니다. –