Error Handling

105. [Error Handling] [Python] 내장 함수 이름 재정의로 발생하는 오류

천재단미 2025. 1. 21. 14:32
728x90
반응형

 

 

Error Code

오류 원인 

 

첨부된 코드에서 발생한 문제는 다음과 같습니다:

  • sum() 함수가 실행될 때 **TypeError*가 발생했습니다.
  • 에러 메시지: sum() missing 1 required positional argument: 'num2'.

 
 

오류 해결 방법

 

1.  에러 원인 분석

이 문제는 sum이라는 이름의 사용자 정의 함수가 Python의 Built-in Function인 sum()을 덮어썼기 때문에 발생합니다.

  1. Python에서 Built-in Function 덮어쓰기:
    • Python에서는 내장 함수의 이름을 변수나 함수 이름으로 재정의하면, 내장 함수가 더 이상 사용되지 않고 재정의된 이름이 우선됩니다.
    • 이로 인해 코드에서 원래의 sum() 함수 대신 사용자가 정의한 sum이 호출되었습니다.
  2. 코드의 동작:
    • def arr_sum(a): return sum(a)는 원래 Python의 내장 함수 sum()을 호출하도록 의도되었습니다.
    • 하지만 코드 이전에 sum이라는 이름으로 다른 함수나 변수가 정의되면서 내장 함수가 덮어쓰기되었습니다.
    • 결과적으로, sum은 더 이상 내장 함수가 아닌 사용자 정의 함수로 처리되어 오류가 발생했습니다.

 

2.  에러 해결 방법

2-1. 덮어쓴 이름 삭제:
Python에서 덮어쓴 이름을 삭제하면 내장 함수가 다시 사용 가능해집니다.
 

del sum

 
 
2-2. 함수명이나 변수명 변경:
내장 함수와 동일한 이름을 사용하지 않도록 합니다.
예를 들어, 사용자 정의 함수명을 my_sum으로 변경합니다.
 

def my_sum(a):
    return sum(a)

 
 
2-3. 코드 수정: 아래는 수정된 코드를 보여줍니다:

# 내장 함수 sum을 호출하도록 이름 충돌 방지
def arr_sum(a):
    return sum(a)

# 혹시 sum 이름을 덮어썼다면 삭제
del sum

# 테스트
result = arr_sum([1, 2, 3, 4])
print(f"리스트 요소의 합: {result}")  # 출력: 리스트 요소의 합: 10

 
 





3.  추가 학습: Python에서 내장 함수와 이름 충돌 피하기

이름 충돌 확인:
함수나 변수를 정의하기 전에 해당 이름이 내장 함수로 사용되고 있는지 확인합니다.
 

print(sum)  # 내장 함수인지 확인

 
 
 
일관된 네이밍 규칙 사용:
사용자 정의 함수명에는 접두사나 명확한 의미를 담은 이름을 사용합니다.
예: custom_sum, calculate_sum 등.
내장 함수와 변수 재정의 방지:
del 명령어를 사용해 이미 덮어쓴 내장 함수 이름을 삭제하면 기본 기능을 복구할 수 있습니다.
 
 

del sum

 



728x90
반응형
home top bottom
}