
들어가며
C만 써오다가 파이썬을 처음 봤을 때 솔직히 좀 당황했다.{}는 어디 갔지? 세미콜론은? int x = 5;는 왜 그냥 x = 5야?
크래프톤 정글 2주차, W3Schools 01~11챕터를 직접 코딩하면서 이 물음표들이 하나씩 해소됐다.
이 글은 그 과정을 정리한 것이다. C 출신이 파이썬에서 낯설었던 것들 위주로.
시리즈 개요: W3Schools 파이썬 튜토리얼 1~25챕터를 공부한 내용을 묶어 정리합니다.
이번 편은 챕터 01~11: 기초 문법 전반 — 들여쓰기, 변수, 타입, 문자열, Boolean, 연산자
1. 들여쓰기가 문법이다 (Ch.03)
파이썬에서 가장 먼저, 그리고 가장 크게 낯선 것: 중괄호가 없다.
C에서 if 블록을 {}로 감쌌다면, 파이썬은 들여쓰기 자체가 그 역할을 한다.
스타일 취향 문제가 아니라 문법 오류다. 들여쓰기가 안 맞으면 코드가 아예 실행되지 않는다.
C와 나란히 비교해 보면 이렇다.
| C | Python |
|---|---|
| if (5 > 2) { printf("맞아"); } |
if 5 > 2: print("맞아") |
조건식 괄호도 없다. if (5 > 2)가 아니라 if 5 > 2: 다. 뒤에 콜론(:)도 필수다.
같은 블록 내에서 공백 개수가 다르면 IndentationError 발생. 관례는 공백 4칸. 탭과 스페이스 섞는 것도 금지다.

2. 주석과 print() (Ch.02, 04)
파이썬 실행은 간단하다. .py 파일을 저장하고 터미널에서 python hello.py. #include도 없고 main()도 없다. 파일 자체가 실행 단위다.
print("Hello, World!") # C에서 main()이 필요했던 것과 달리 한 줄이면 끝
# 한 줄 주석은 #
'''
여러 줄 주석은
트리플 따옴표로 감싼다
'''
# print()는 기본적으로 줄바꿈으로 끝남
print("A", end="") # end 파라미터로 줄바꿈 없애기
print("B", end="") # 출력: AB
print("I am", 25) # 콤마로 여러 값 출력 가능, 출력: I am 25
3. 변수 — 타입 선언이 없다 (Ch.05, 06)
C에서 변수 쓰려면 int x = 5;처럼 타입을 먼저 선언해야 했다.
파이썬은 그냥 x = 5. 끝이다. 파이썬이 타입을 알아서 파악한다.
더 충격적인 건 같은 변수에 다른 타입을 덮어쓸 수 있다는 것이다. C에서는 상상도 못 할 일이다.
# 타입 선언 없이 그냥 쓴다
x = 5 # int
x = "Sally" # str — 같은 변수에 타입이 바뀜. 이게 동적 타입(Dynamic Typing)
# type()으로 현재 타입 확인
print(type(x)) # <class 'str'>
# 한 줄에 여러 변수 동시 할당
x, y, z = "Orange", "Banana", "Cherry"
# 리스트를 변수로 언패킹
fruits = ["apple", "banana", "cherry"]
a, b, c = fruits # 개수가 맞아야 함
네이밍 컨벤션
| 스타일 | 예시 | 파이썬 권장 |
|---|---|---|
| snake_case | my_variable_name | 권장 (PEP 8) |
| camelCase | myVariableName | 비권장 |
| PascalCase | MyClassName | 클래스명에만 |
전역/지역 변수 — global 키워드
함수 내에서 전역 변수를 수정하려면 반드시 global을 명시해야 한다. 없으면 함수 안에서 같은 이름의 지역 변수가 새로 생긴다.
x = "awesome"
def myfunc():
global x
x = "fantastic" # global 없으면 이 x는 함수 내 지역변수가 됨
myfunc()
print(x) # "fantastic" — global 선언 덕분에 전역 x가 바뀜
파이썬 내장 데이터 타입 한눈에 보기 (Ch.06)
| 범주 | 타입 | 예시 |
|---|---|---|
| 텍스트 | str | "Hello" |
| 숫자 | int, float, complex | 20 / 20.5 / 1j |
| 시퀀스 | list, tuple, range | [ ] / ( ) / range(6) |
| 매핑 | dict | {"key": "val"} |
| 집합 | set, frozenset | {"a", "b"} |
| 불리언 | bool | True / False |
| 없음 | NoneType | None |
4. 숫자와 형변환 (Ch.07, 08)
파이썬 int는 C의 int와 달리 크기 제한이 없다. 32비트 오버플로우 걱정 없이 큰 숫자를 그냥 쓸 수 있다.
알고리즘 문제에서 오버플로우를 전혀 신경 안 써도 된다는 게 처음엔 좀 신기했다.
# int — 무한 크기
y = 35656222554887711 # 이게 그냥 됨. C였으면 long long도 모자랄 수 있다
# float — 과학적 표기법
x = 35e3 # 35000.0
# complex — 허수는 j 표기 (수학의 i)
z = 3+5j
# 타입 간 변환 — C처럼 (int)x 캐스팅이 아니라 생성자 함수 호출
a = float(1) # 1 -> 1.0
b = int(2.8) # 2.8 -> 2 (반올림X, 버림O)
c = str(42) # 42 -> "42"
# 난수 생성
import random
print(random.randrange(1, 10))
주의: int(2.8)은 버림이다. 반올림을 원하면 round(2.8)을 써야 한다.
5. 문자열 — 슬라이싱이 핵심이다 (Ch.09)
C에서 문자열은 char[]고, 길이 구하려면 strlen()을 불러야 했다.
파이썬 문자열은 그 자체로 강력한 메서드를 가진 객체다. 특히 슬라이싱이 알고리즘에서 엄청나게 편리하다.
슬라이싱 — 파이썬의 핵심 문법
b = "Hello, World!"
print(b[0]) # 'H' — 0부터 시작
print(b[2:5]) # 'llo' — 2 포함, 5 미포함
print(b[:5]) # 'Hello' — 처음부터 4까지
print(b[7:]) # 'World!' — 7부터 끝까지
print(b[-6:-1]) # 'World' — 음수 인덱스 (뒤에서부터)
print(b[::-1]) # '!dlroW ,olleH' — 문자열 뒤집기
자주 쓰는 문자열 메서드
| 메서드 | 설명 | 예시 |
|---|---|---|
| upper() / lower() | 대/소문자 변환 | "hi".upper() → "HI" |
| strip() | 앞뒤 공백 제거 | " hi ".strip() → "hi" |
| replace(a, b) | a를 b로 교체 | "Hi".replace("H","J") → "Ji" |
| split(sep) | 구분자로 나눠 리스트 반환 | "a,b".split(",") → ["a","b"] |
| len(s) | 문자열 길이 | len("Hello") → 5 |
| "x" in s | 포함 여부 확인 | "free" in "free time" → True |
f-string — 포맷팅의 현대적 방식 (Python 3.6+)
C의 printf("%s %d", name, age) 같은 역할을 훨씬 깔끔하게 한다.
문자열 앞에 f를 붙이고 {} 안에 변수나 표현식을 넣으면 된다.
name = "John"
age = 36
# 기본 f-string
txt = f"My name is {name}, I am {age}"
print(txt) # My name is John, I am 36
# 소수점 자리 지정
price = 59
print(f"Price: {price:.2f}") # Price: 59.00
# {} 안에서 계산도 가능
print(f"Total: {20 * 59}") # Total: 1180
6. Boolean — Falsy 값을 알아야 실수 안 한다 (Ch.10)
파이썬 True / False는 첫 글자가 대문자다. true는 에러다.
그것보다 더 중요한 건 Falsy 값 개념이다. 파이썬에서는 빈 값들이 자동으로 False처럼 평가된다.
| True로 평가되는 것 | False로 평가되는 것 (Falsy) |
|---|---|
| "abc", 123, [1,2], {"a":1}, (1,) | 0, "", [], {}, (), None, False |
# Falsy 활용 — C에서 if (str != NULL && strlen(str) > 0) 하던 것을
# 파이썬에서는 이렇게 쓸 수 있다
s = ""
if s:
print("뭔가 있음")
else:
print("비어 있음") # 빈 문자열이라 이쪽 실행
# isinstance() — 타입 체크
x = 200
print(isinstance(x, int)) # True
7. 연산자 — C에 없는 것들 위주로 (Ch.11)
+, -, *, / 같은 기본 산술 연산자는 C랑 거의 같다.
다만 파이썬에만 있는 특이한 연산자들이 몇 가지 있다. 이것들을 모르면 남의 코드를 읽을 때 막힌다.
산술 — C와 다른 것들
| 연산자 | 의미 | 예시 |
|---|---|---|
| ** | 거듭제곱 (C에 없음) | 2**10 = 1024 |
| // | 버림 나눗셈 (몫만) | 7//2 = 3 |
| / | 나눗셈 — 항상 float 반환 | 7/2 = 3.5 (C: 3) |
is vs == — 이게 제일 헷갈린다
처음 파이썬 코드를 보면 is를 ==처럼 쓴 것 같은데 결과가 다르다. 이 둘은 비교하는 대상이 다르다.
x = [1, 2, 3]
y = [1, 2, 3]
print(x == y) # True — 값이 같다 (내용 비교)
print(x is y) # False — 다른 객체다 (메모리 주소 비교)
z = x
print(x is z) # True — 같은 객체를 가리킴

체인 비교 — 파이썬만 가능한 문법
x = 5
# C라면 이렇게 써야 함
# if (x > 1 && x < 10)
# 파이썬은 이게 된다
print(1 < x < 10) # True — 수학적 표기 그대로
바다코끼리 연산자 := (Python 3.8+)
이름이 독특하다. := 기호가 바다코끼리 눈이랑 이빨처럼 생겼다고 해서 walrus operator라고 부른다.
역할은 조건식 안에서 변수를 할당하고 동시에 사용하는 것이다.
numbers = [1, 2, 3, 4, 5]
# 기존 방식
count = len(numbers)
if count > 3:
print(f"List has {count} elements")
# 바다코끼리 연산자 — 한 줄로
if (count := len(numbers)) > 3:
print(f"List has {count} elements")
멤버십 연산자 in / not in
리스트, 문자열, 딕셔너리 등에서 특정 값이 있는지 확인할 때 쓴다.
C에서 루프 돌며 하나씩 비교하던 것을 한 줄로 표현할 수 있다.
fruits = ["apple", "banana", "cherry"]
print("banana" in fruits) # True
print("pineapple" not in fruits) # True
# 문자열에서도 동일
text = "Hello World"
print("hello" in text) # False — 대소문자 구분함
print("Hello" in text) # True
마무리
01~11챕터를 정리하고 나니 결국 파이썬의 기초 문법은 하나의 철학으로 귀결된다.
"더 짧게, 더 읽기 좋게."
중괄호 없애고, 타입 선언 없애고, 체인 비교 되고, f-string으로 포맷팅 깔끔하게.
처음엔 낯설지만 적응하면 C로 돌아가기 싫어진다. 특히 슬라이싱이랑 f-string은.
다음 편: 챕터 12~15 — List, Tuple, Set, Dictionary 자료구조 4총사
2026. 크래프톤 정글 2주차 | W3Schools Ch.01~11
'개발 > 공부 기록' 카테고리의 다른 글
| CSAPP 11장 공부 기록 1편 : 네트워크 바깥세상: 장비, 주소, 캡슐화 (1) | 2026.04.23 |
|---|---|
| 컴퓨터 시스템 9장 핵심 정리 (1) | 2026.04.16 |
| [파이썬 기초 문법 총정리 #4] 실전 도구 완전 정복 — Arrays, Iterators, Modules, Dates, Math (Ch.21~25) (3) | 2026.03.08 |
| [파이썬 기초 문법 총정리 #3] 제어문과 함수 완전 정복 — if, while, for, def, lambda (Ch.16~20) (1) | 2026.03.08 |
| [파이썬 기초 문법 총정리 #2] 자료구조 4총사 완전 정복 — List, Tuple, Set, Dict (Ch.12~15) (0) | 2026.03.08 |