Python 테스트 없음
이 중에서 '없음' 테스트는 아닙니다.
if val != None:
if not (val is None):
if val is not None:
어떤 것이 더 좋으며, 그 이유는 무엇입니까?
if val is not None:
# ...
변수가 설정되지 않은 것을 테스트하기 위한 피토닉어 관용어입니다.None이 관용구는 키워드 함수를 디폴트 파라미터로 선언하는 경우에 특히 사용됩니다. is는 Python에서 ID를 테스트합니다.왜냐하면 의 인스턴스는 하나밖에 없기 때문이다.None실행 중인 Python 스크립트/프로그램에 표시됩니다.is최적의 테스트입니다.Johnsyweb이 지적한 바와 같이, 이는 PEP 8의 "프로그래밍 권장 사항"에서 설명합니다.
이것이 왜 바람직한지에 대해서는
if not (val is None):
# ...
이는 단순히 "가독성이 중요하다"는 Python의 Zen의 일부일 뿐입니다.Good Python은 좋은 의사 코드에 가깝습니다.
없음과 같은 싱글톤과의 비교는 항상 다음과 같이 수행해야 합니다.
is또는is not, 등호 연산자는 사용하지 않습니다.또한, 글쓰기에 주의하세요.
if x정말이라면if x is not None- 예를 들어 기본값인 변수 또는 인수가 다른 값으로 설정되었는지 테스트하는 경우.다른 값에는 부울 컨텍스트에서 false일 수 있는 유형(예: 컨테이너)이 있을 수 있습니다.
PEP 8은 모든 Python 프로그래머에게 필수적인 읽을거리입니다.
이런 종류의 질문을 하는 가장 좋은 방법은 비단뱀이 정확히 무엇을 하는지 보는 것입니다.이 모듈은 매우 유용한 정보입니다.
>>> import dis
>>> dis.dis("val != None")
1 0 LOAD_NAME 0 (val)
2 LOAD_CONST 0 (None)
4 COMPARE_OP 3 (!=)
6 RETURN_VALUE
>>> dis.dis("not (val is None)")
1 0 LOAD_NAME 0 (val)
2 LOAD_CONST 0 (None)
4 COMPARE_OP 9 (is not)
6 RETURN_VALUE
>>> dis.dis("val is not None")
1 0 LOAD_NAME 0 (val)
2 LOAD_CONST 0 (None)
4 COMPARE_OP 9 (is not)
6 RETURN_VALUE
Python은 마지막 두 사례가 동일한 작업 시퀀스로 감소한다는 점에 유의하십시오.not (val is None)연산자를 사용합니다.첫 번째는 연산자를 사용하여None.
다른 답변에서 지적된 바와 같이!=와 비교하면None좋지 않은 생각입니다.
후자 둘 중 어느 쪽이든, 그 이후로는val잠재적으로 정의되는 타입일 수 있습니다.__eq__()지나가면 진실로 돌아오다None.
언급URL : https://stackoverflow.com/questions/3965104/not-none-test-in-python
'source' 카테고리의 다른 글
| sst:xtrabackup(galera) 사용 시 노드가 클러스터에 가입하는 문제 (0) | 2022.11.16 |
|---|---|
| Eclipse/Java 코드 완료가 작동하지 않음 (0) | 2022.11.16 |
| 독립 실행형 전체 텍스트 검색 서버 선택: 스핑크스 또는 SOLR? (0) | 2022.11.16 |
| 로컬 phpMyAdmin 클라이언트를 사용하여 원격 서버에 액세스하는 방법 (0) | 2022.11.16 |
| C#의 null-coalesing 연산자와 동등한 Python이 있습니까? (0) | 2022.11.16 |