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 |