[python] ‘NoneType’개체 란 무엇입니까?

파이썬 스크립트를 실행할 때이 오류가 발생합니다.

TypeError: cannot concatenate 'str' and 'NoneType' objects

‘str’이 문자열을 의미한다고 확신하지만 ‘NoneType’객체가 무엇인지 모르겠습니다. 내 스크립트는 두 번째 줄에서 엉망이되고 첫 번째 줄의 명령이 예상대로 내 asa에 있기 때문에 첫 번째 줄이 작동한다는 것을 알고 있습니다. 처음에는 send_command 내에서 변수와 사용자 입력을 사용하고 있기 때문일 수 있다고 생각했습니다.

‘CAPS’의 모든 항목은 변수이고 ‘소문자’의 모든 항목은 ‘parser.add_option’옵션에서 입력됩니다.

pexpect 및 optparse를 사용하고 있습니다.

send_command(child, SNMPGROUPCMD + group + V3PRIVCMD)
send_command(child, SNMPSRVUSRCMD + snmpuser + group + V3AUTHCMD + snmphmac + snmpauth + PRIVCMD + snmpencrypt + snmppriv)



답변

NoneType값이 없음None 을 나타내는 객체 인 객체 의 유형입니다 . “아무것도 반환하지 않는”함수의 반환 값입니다. 또한 무언가를 검색하고 찾을 수 있거나 찾을 수없는 함수에 대한 일반적인 기본 반환 값입니다. 예를 들어, 정규 표현식이 일치하지 않거나 키에 dict에 항목이 없을 때 반환됩니다 . 문자열이나 다른 개체에 추가 할 수 없습니다 .Nonere.searchdict.getNone

변수 중 하나는 None문자열이 아니라입니다. 어쩌면 당신은 잊었 return당신의 기능 중 하나에서, 아니면 사용자가 명령 줄 옵션을 제공하지 않았고 optparseNone해당 옵션의 값. None문자열 에 추가하려고하면 다음 과 같은 예외가 발생합니다.

send_command(child, SNMPGROUPCMD + group + V3PRIVCMD)

하나 group또는 SNMPGROUPCMD또는 V3PRIVCMDNone값으로.


답변

NoneType단순히 None싱글 톤 의 유형입니다 .

>>> type(None)
<type 'NoneType'>

위의 후자 링크에서 :

None

유형의 유일한 값입니다 NoneType. None기본 인수가 함수에 전달되지 않을 때처럼 값이 없음을 나타내는 데 자주 사용됩니다. 에 대한 할당 None은 불법이며 SyntaxError.

귀하의 경우에는 연결하려는 항목 중 하나가 인 것처럼 보이 None므로 오류가 발생합니다.


답변

방어적인 프로그래밍을 위해 사용하기 전에 개체가 null인지 확인해야합니다.

if obj is None:

또는

if obj is not None:


답변

그것은 당신이 문자열을 None.

None은 Python의 “null” NoneType이며 그 유형입니다.

이 코드는 같은 종류의 오류를 발생시킵니다.

>>> bar = "something"
>>> foo = None
>>> print foo + bar
TypeError: cannot concatenate 'str' and 'NoneType' objects


답변

Python에서는 값이 없음을 나타 내기 위해 다음 None값을 사용할 수 있습니다.types.NoneType.None


답변

오류 메시지에서 두 객체의 값 (문자열 None과이 예에서는) 을 표시하여 연결할 수 없다는 것을 알리는 대신 Python 인터프리터는 연결하려는 객체의 유형을 표시하여이를 알려줍니다. 모든 문자열 str의 유형은 단일 None인스턴스 의 유형 이 호출 되는 동안 NoneType입니다.

일반적으로 걱정할 필요는 NoneType없지만이 예에서는이를 알아야합니다 type(None) == NoneType.


답변

다음과 같은 이유로 오류가 발생했습니다.
>>> None + "hello world"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
>>>

Python의 None 객체는 대략 null 과 같습니다. 다른 언어의 , nil 등과 .