Python TypeError: +에 대해 지원되지 않는 피연산자 유형: 'NoneType' 및 'Int'

Zeeshan Afridi 2023년10월8일
  1. Python의 TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
  2. Python에서 TypeError: unsupported operand type(s) for +: 'NoneType' and 'int' 수정
  3. 함수 내 TypeError: unsupported operand type(s) for +: 'NoneType' and 'int' 수정
Python TypeError: +에 대해 지원되지 않는 피연산자 유형: 'NoneType' 및 'Int'

Python에서 TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'null 값이 있는 정수 값을 추가할 때 발생합니다. 이 기사에서는 Python 오류와 이를 해결하는 방법에 대해 설명합니다.

Python의 TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'

Python 컴파일러는 데이터 유형이 다른 두 값을 조작하기 때문에 TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'를 발생시킵니다. 이 경우 이러한 값의 데이터 유형은 intnull이며 + 연산자의 피연산자 intnull이 유효하지 않기 때문에 작업이 지원되지 않는다는 오류가 표시됩니다.

코드 예:

a = None
b = 32

print("The data type of a is ", type(a))
print("The data type of b is ", type(b))

# TypeError --> unsupported operand type(s) for +: 'NoneType' and 'int'
result = a + b

출력:

The data type of a is  <class 'NoneType'>
The data type of b is  <class 'int'>
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'

위 프로그램의 출력에서 볼 수 있듯이 a의 데이터 유형은 NoneType이고 b의 데이터 유형은 int입니다. ab 변수를 추가하려고 하면 TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'가 발생합니다.

다음은 데이터 유형이 다르기 때문에 TypeError를 일으키는 몇 가지 유사한 경우입니다.

# Adding a string and an integer
a = "string"
b = 32
a + b  # --> Error

# Adding a Null value and a string
a = None
b = "string"
a + b  # --> Error

# Adding char value and a float
a = "D"
b = 1.1
a + b  # --> Error

Python에서 TypeError: unsupported operand type(s) for +: 'NoneType' and 'int' 수정

null을 사용하여 산술 연산을 수행할 수 없으며 위의 프로그램은 오류를 발생시키는 것으로 나타났습니다. 또한 유사한 경우가 있으면 산술 연산이나 기타 원하는 작업을 수행하기 전에 값을 형 변환합니다.

이 오류를 수정하려면 유효한 데이터 유형을 사용하여 산술 연산을 수행하거나 값을 유형 변환하거나 함수가 null 값을 반환하는 경우 try-catch 블록을 사용하여 프로그램 충돌을 방지할 수 있습니다.

코드 예:

a = "Delf"
b = "Stack"

print("The data type of a is ", type(a))
print("The data type of b is ", type(b))

result = a + b

print(result)

출력:

The data type of a is  <class 'str'>
The data type of b is  <class 'str'>
DelfStack

보시다시피 ab에 대한 유사한 데이터 유형이 있습니다. 두 변수의 특성이 동일하기 때문에 오류 없이 완벽하게 연결됩니다.

함수 내 TypeError: unsupported operand type(s) for +: 'NoneType' and 'int' 수정

코드 예:

def sum_ab(a, b=None):
    # TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'
    return a + b


sum_ab(3)

출력:

TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'

위의 코드에서 sum_ab() 함수는 두 개의 인수 ab를 갖고 있으며, b는 기본 인수로 null 값으로 할당되어 있으며 함수는 ab의 합을 반환합니다.

sum_ab(3) 매개변수 하나만 제공했다고 가정해 보겠습니다. 이 기능은 위의 예에서 볼 수 있듯이 추가할 수 없는 None에 대한 기본 매개변수를 자동으로 트리거합니다.

이 경우 TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'를 발생시킨 함수가 무엇인지 확실하지 않은 경우 try-catch 메커니즘을 사용하여 이러한 오류를 극복할 수 있습니다.

코드 예:

try:

    def sum_ab(a, b=None):
        return a + b

    sum_ab(3)

except TypeError:
    print(
        " unsupported operand type(s) for +: 'int' and 'NoneType' \n The data types are a and b are invalid"
    )

출력:

 unsupported operand type(s) for +: 'int' and 'NoneType'
 The data types are a and b are invalid

try-catch 블록은 오류를 해석하고 프로그램 충돌을 방지하는 데 도움이 됩니다.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

관련 문장 - Python Error