None
(이전에 문자열 요소였던 변수)을 is
과 비교하고 싶지만 실패합니다.lxml '없음'유형이 없습니다.
이 변수를 None
과 ==
으로 비교하면 작동합니다.
if xml.a == '':
xml.a = None
: 내가 기본 인자 (즉,
def f(x=None)
)로
None
을 사용하는 일부 라이브러리, 나는 이번처럼 내 nullstrings을 변환하기 때문에
print type(xml.a) -> <type 'lxml.objectify.StringElement'>
:
이
내가 이야기하고있는 변수입니다print type(xml.a) -> <type 'lxml.objectify.NoneElement'>
W :
나중에 타입으로 변경된 HICH가 동일하지 않습니다 :
print type(None) -> <type 'NoneType'>
내가 설명 내가이 값을 비교할 때, 나는 다음과 같은 결과를 얻을 수 위 :
if xml.a is None:
print 'what I expect'
else:
print 'what I do NOT expect' # sadly this one is printed
if xml.a == None:
print 'what I do NOT expect' # this one is printed again...
else:
print 'what I expect'
내가 이미 알고를 그 같은 인스턴스가 아닌 개체를 비교했을 때, is
은 false
을 반환합니다. 하지만 제 생각에 을 None
인스턴스보다 먼저 설정 했었습니다. 반면에 그들은 그들 타입과 일치하지 않으며 is
은 false
을 반환하므로 None
과 같은 인스턴스가 될 수 없습니다.
- 왜?
==
을 사용하는 것 외에 다른 선택의 여지가 있습니까? 그것은 here에 대한 논의가 있었다is
와isinstance
의 차이에 대한 자세한 내용을 알고 싶은 분들을 위해
.
를? – martineau
'xml.a = None' 이후. – WaltheRed
대체 접근법은 특별히 None에 대한 테스트를 중단하고'xml.a '와 같은 "거짓 데이터"를 찾습니다. – tdelaney