본문 바로가기
카테고리 없음

[파이썬] 초보들의 문법 실수, 자료형 실수, 함수 실수

by 개발자를 꿈꾸는 사람들과 함꼐 2025. 4. 3.

문법 실수(들여쓰기와 대입, 괄호)

1. 들여쓰기 오류

if True:
print("Hello, Python!")

문제점: 파이썬은 들여쓰기로 코드 블록을 구분합니다.
이 코드는 IndentationError가 발생합니다.

if True:
    print("Hello, Python!")

해석: 조건문 내부의 코드는 들여쓰기를 해야 합니다.
파이썬에서는 들여쓰기가 문법의 일부이며, 보통 스페이스 4칸이 기본입니다.

2. 비교 연산자와 대입 연산자 혼동

if x = 5:
    print("x는 5입니다.")

문제점: =는 할당, ==는 비교입니다.

if x == 5:
    print("x는 5입니다.")

해석: 조건문에서는 값을 비교해야 하므로 반드시 ==을 사용해야 합니다.
=는 값을 변수에 넣는 것이기 때문에 조건식에는 적절하지 않습니다.

3. 괄호 생략

print "Hello, world!"

문제점: 파이썬 3에서는 괄호 없는 print는 SyntaxError를 발생시킵니다.

print("Hello, world!")

해석: 파이썬 3에서는 print()는 함수로 정의되어 있으므로 항상 괄호를 포함해야 합니다.

자료형 실수(문자열, 숫자, 리스트)

1. 문자열과 숫자 연결

age = 25
print("나이는 " + age + "세입니다.")

문제점: 문자열 + 숫자 조합은 TypeError를 발생시킵니다.

print("나이는 " + str(age) + "세입니다.")
# 또는
print(f"나이는 {age}세입니다.")

해석: 파이썬에서는 문자열과 정수를 직접 더할 수 없습니다.
str()로 형변환하거나 f-string을 사용하는 것이 일반적입니다.

2. 리스트 복사 문제 (얕은 복사)

a = [1, 2, 3]
b = a
b[0] = 100
print(a)  # [100, 2, 3]

문제점: 두 리스트는 같은 객체를 참조하고 있어 하나를 변경하면 다른 것도 바뀝니다.

b = a[:]

해석: 슬라이싱(a[:])을 사용하면 리스트의 복사본을 새롭게 만들 수 있습니다.
이는 원본과 독립적으로 작동하는 별도의 리스트가 됩니다.

3. None과 False의 혼동

x = None
if x == False:
    print("거짓입니다.")

문제점: None은 False가 아닙니다. 조건문이 실행되지 않습니다.

if x is None:
    print("값이 없습니다.")

해석: None은 값이 없음을 의미하는 객체입니다. 비교에는 is None을 사용합니다.

함수 실수(함수, 반복문)

1. 함수 호출 괄호 생략

def greet():
    return "안녕하세요!"

print(greet)  # 출력: <function greet at 0x...>
print(greet())

해석: greet는 함수의 참조이고, greet()는 실제 호출입니다.
함수를 실행하려면 괄호를 반드시 붙여야 원하는 결과가 출력됩니다.

2. 반복문에서 인덱스 사용 실수

fruits = ["사과", "바나나", "포도"]
for i in range(len(fruits)):
    print(fruits[i])

문제점: 리스트를 직접 순회하는 것이 더 간단하고 가독성 좋습니다.

for fruit in fruits:
    print(fruit)

해석: 파이썬에서는 리스트나 튜플 등 순회 가능한 객체를 직접 순회하는 것이 더 권장됩니다.
불필요한 인덱스 계산을 줄이고 코드가 간결해집니다.

3. 리스트에 값 추가할 때 append와 + 혼동

my_list = [1, 2, 3]
my_list += 4  # TypeError

문제점: +=는 리스트와 리스트끼리만 사용할 수 있습니다.

my_list.append(4)  # [1, 2, 3, 4]

해석: append()는 리스트에 하나의 요소를 추가합니다.
++= 연산은 같은 자료형끼리만 가능하므로 리스트에 정수를 더하려면 append를 사용해야 합니다.

마무리

파이썬을 처음 배우는 사람이라면 위와 같은 실수를 한 번쯤은 경험하게 됩니다.
실수는 학습의 일부이며, 중요한 것은 실수를 통해 원리를 이해하고 고쳐나가는 것입니다.

이 글에서 소개한 실수들을 기억하고, 같은 상황에서 빠르게 원인을 파악할 수 있다면 여러분은 훨씬 빠르게 실력을 키울 수 있을 것입니다.