코드의 논리가 아무리 완벽해도, 언어마다 요구하는 사소한 기호나 선언 방식을 틀리면 매정하게 빨간 줄(에러)이 그어진다. 가장 빈번하게 헷갈리는 문법적 차이 3가지를 정리했다.
1. 명령어의 끝: 세미콜론(;)의 유무
명령이 끝났음을 컴퓨터에게 알려주는 마침표 역할이다.
- Java & C (필수): 하나의 코드가 끝날 때마다 반드시 세미콜론(
;)을 찍어야 한다. 빼먹으면 즉시 컴파일 에러가 발생한다. - Python (생략): 세미콜론을 쓰지 않는다. 엔터(줄바꿈)를 치는 순간 하나의 명령어가 끝난 것으로 알아서 인식한다.
// [Java & C] 마침표(;)가 없으면 문장이 안 끝난 줄 안다.
int a = 10;
System.out.println(a);
# [Python] 엔터만 치면 끝난다. (세미콜론을 써도 에러는 안 나지만, 파이썬 생태계에선 쓰지 않는 것이 국룰이다)
a = 10
print(a)
2. 함수나 조건문을 여는 방식: 중괄호 {} vs 콜론 :
이전 포스트에서 다룬 ‘코드 블록’을 시작할 때 사용하는 기호다.
- Java & C: 조건문(
if), 반복문(for), 함수 선언 시 항상 괄호()뒤에 중괄호{를 열어서 시작을 알린다. - Python: 중괄호 대신 콜론(
:)을 찍고, 다음 줄부터 들여쓰기를 한다. 파이썬에서:은 “자, 이제부터 진짜 내용이 시작될 거야!”라는 뜻이다.
// [Java] 함수 선언 시 괄호 뒤에 { 를 연다.
public void doSomething() {
// 내용
}
# [Python] 함수 선언(def) 시 괄호 뒤에 무조건 : 을 찍어야 한다.
def do_something():
# 내용
3. 변수 선언: 깐깐한 타입 지정 vs 눈치껏 할당
- Java & C (정적 타이핑): 변수를 만들 때, 이 바구니에 정수(
int)를 담을지, 문자(String,char)를 담을지 미리 명시해야 한다. 한 번 정해진 타입은 바꿀 수 없다. - Python (동적 타이핑): 타입 따위는 적지 않는다. 그냥 변수 이름에 값을 넣으면, 들어오는 값의 형태를 보고 파이썬이 눈치껏 타입을 결정한다. 중간에 다른 타입의 값을 넣어도 알아서 변신한다.
// [Java & C] 타입을 반드시 명시해야 함
int age = 20;
String name = "홍길동";
// age = "스무살"; // 💥 에러! int 바구니에 문자열을 넣을 수 없음
# [Python] 값만 넣으면 끝
age = 20
name = "홍길동"
age = "스무살" # 에러 안 남! int였던 age가 순간적으로 String으로 바뀜