본문으로 건너뛰기
김신건의 로그

[Python] 기본 문법: 들여쓰기, 주석, 변수

· 수정 · 📖 약 1분 · 582자/단어 #python #syntax #basics
python 문법, python syntax, 들여쓰기, indentation, python 주석, python 변수

정의

Python은 들여쓰기(indentation)로 블록을 구분하는 언어다. C/Java의 중괄호 {} 대신 일관된 들여쓰기 수준이 블록 스코프를 결정한다. PEP 8은 공백 4칸을 권장하며 탭과 공백 혼용은 TabError를 발생시킨다.

들여쓰기 규칙

python
def greet(name):
  if name:           # 4칸 들여쓰기
      print(f"Hello, {name}")
      for _ in range(2):
          print("!")  # 8칸 (중첩)
  else:
      print("Hello, stranger")

greet("Alice")
결과
Hello, Alice
!
!

같은 블록 안에서는 들여쓰기 폭이 동일해야 한다. 다음은 IndentationError를 던진다.

def bad():
    x = 1
     y = 2   # IndentationError: unexpected indent

주석

  • 한 줄 주석: #
  • 여러 줄 “주석”: 보통 docstring("""...""")을 사용하지만, 실제로는 문자열 리터럴이라 GC된다.
# 한 줄 주석
def add(a, b):
    """두 수를 더한다.

    이런 형식의 docstring은 help(add)로 확인할 수 있다.
    """
    return a + b

#은 라인 끝까지 적용되며, 문자열 리터럴 안에서는 일반 문자로 취급된다.

변수와 할당

Python은 동적 타이핑이다. 변수 선언이 없고, 할당과 동시에 이름이 객체에 바인딩된다.

python
x = 42          # int
x = "hello"     # 같은 이름이 다른 타입 객체를 가리킴
y, z = 1, 2     # 튜플 언패킹
a = b = c = 0   # 체인 할당 (모두 같은 객체)

print(type(x), x)
print(y, z)
print(a is b, b is c)
결과
<class 'str'> hello
1 2
True True

x = 42는 “x라는 라벨을 정수 객체 42에 붙인다”는 의미이지, “x라는 메모리 슬롯에 42를 쓴다”가 아니다. 이 차이는 가변/불변 객체 동작을 이해할 때 핵심이다.

Expression vs Statement

  • Expression(표현식): 값을 만들어내는 코드. 1 + 2, [x*2 for x in xs], f(a)
  • Statement(문): 동작을 수행하는 코드. if, for, def, return, = 할당

Python 3.8+ walrus operator := 는 expression 자리에서 할당을 수행하는 예외다.

if (n := len(data)) > 10:
    print(f"길이가 {n}으로 너무 김")

식별자(Identifier) 규칙

  • 영문/유니코드 문자, 숫자, _ 사용 가능 (숫자로 시작 불가)
  • 대소문자 구분: valueValue는 다른 변수
  • 예약어 33개(if, for, class, True, None, …)는 사용 불가
  • 관례:
    • snake_case: 변수/함수
    • PascalCase: 클래스
    • _leading_underscore: 내부용
    • __double_underscore__: 매직 메서드/속성
# 가능하지만 권장 안 함
한글변수 = 1
π = 3.14159

라인 연속

긴 한 줄은 백슬래시 \ 또는 괄호 안에서 자동으로 연속된다.

total = 1 + 2 + 3 + \
        4 + 5 + 6      # 백슬래시 연속

items = [
    "apple",
    "banana",
    "cherry",          # 괄호/대괄호 안은 자유 줄바꿈
]

PEP 8은 괄호 활용을 백슬래시보다 권장한다.

다중 문장 한 줄에 작성

세미콜론으로 분리 가능하지만 가독성 때문에 권장하지 않는다.

x = 1; y = 2; print(x + y)  # 동작은 하나 비권장

PEP 8 핵심 스타일

  • 들여쓰기: 공백 4칸
  • 한 줄 최대 79자(주석은 72자)
  • 함수/클래스 정의 사이 빈 줄 2줄
  • 메서드 사이 빈 줄 1줄
  • 연산자 양옆 공백 1칸: a + b, a == b
  • 함수 호출 시 키워드 인수 = 양옆 공백 없음: f(x=1)

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기