출시·고도화 중
Python 안내서 · 2/6
이 장에서는 Python 코드를 읽고 쓰는 데 필요한 기본 문법을 다룹니다. 변수와 들여쓰기, 함수 정의와 인자 전달 방식, 조건문과 반복문, 그리고 문자열을 만드는 가장 편한 방법인 f-문자열을 차례로 살펴봅니다.
Python 변수는 선언 키워드 없이 값을 대입하는 순간 만들어집니다. 변수는 값에 붙인 이름표일 뿐이며, 변수 자체에는 타입이 없고 값에 타입이 있습니다. 그래서 같은 이름에 다른 타입의 값을 다시 대입할 수도 있습니다.
count = 3
name = "Python"
pi = 3.14159
is_ready = True
# 여러 변수에 한 번에 대입하고, 값을 맞바꿉니다
x, y = 1, 2
x, y = y, x
# 관례: 변수와 함수는 snake_case, 상수는 대문자
MAX_RETRIES = 5이름 규칙은 PEP 8 스타일 가이드를 따르는 것이 일반적입니다. 변수와 함수는 snake_case, 클래스는 PascalCase, 상수는 UPPER_CASE를 씁니다.
Python은 중괄호 대신 들여쓰기로 코드 블록을 구분합니다. if, for, def, class 같은 문장은 콜론(:)으로 끝나고, 그 아래 같은 깊이로 들여 쓴 줄들이 하나의 블록이 됩니다. 들여쓰기는 공백 네 칸이 표준이며, 탭과 공백을 섞으면 오류가 나므로 편집기가 공백을 쓰도록 설정합니다. 주석은 #으로 시작하고, 함수나 클래스 바로 아래에 큰따옴표 세 개로 감싼 문자열을 두면 문서 문자열(docstring)이 되어 help()와 편집기 도움말에 표시됩니다.
함수는 def로 정의하고 return으로 값을 돌려줍니다. return이 없으면 None을 돌려줍니다. 매개변수에 기본값을 줄 수 있고, 호출할 때 이름을 붙여(키워드 인자) 순서와 상관없이 값을 넘길 수 있습니다.
def greet(name: str, greeting: str = "Hello") -> str:
return f"{greeting}, {name}!"
greet("Mina") # 'Hello, Mina!'
greet("Mina", greeting="Hi") # 'Hi, Mina!'
greet(greeting="Hey", name="Joon") # 'Hey, Joon!'인자 개수가 정해지지 않았을 때는 *args와 **kwargs를 씁니다. *args는 남는 위치 인자를 튜플로, **kwargs는 남는 키워드 인자를 딕셔너리로 받습니다. 매개변수 목록에 *만 따로 두면 그 뒤의 매개변수는 반드시 이름을 붙여 넘겨야 합니다.
def log(message, *args, level="INFO", **kwargs):
print(level, message, args, kwargs)
log("start", 1, 2, user="kim")
# INFO start (1, 2) {'user': 'kim'}
def connect(host, *, timeout=10):
...
connect("db.local", timeout=5) # timeout 은 키워드로만 넘길 수 있습니다주의할 점이 하나 있습니다. 기본값은 함수를 정의할 때 한 번만 계산됩니다. 그래서 def add(item, items=[])처럼 리스트 같은 바뀌는 값을 기본값으로 쓰면 호출마다 같은 리스트가 공유됩니다. 이럴 때는 기본값을 None으로 두고 함수 안에서 새 리스트를 만듭니다.
조건문은 if, elif, else를 씁니다. 논리 연산자는 기호가 아니라 and, or, not이라는 단어입니다. 반복문은 for와 while 두 가지이며, for는 리스트·문자열·딕셔너리처럼 순회할 수 있는 모든 것을 차례로 돕니다.
score = 82
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
else:
grade = "C"
for i in range(3): # 0, 1, 2
print(i)
fruits = ["apple", "banana"]
for index, fruit in enumerate(fruits):
print(index, fruit)
n = 10
while n > 0:
n -= 3
if n == 4:
continue
print(n)break는 반복을 즉시 끝내고, continue는 다음 회차로 넘어갑니다. 한 줄 조건식은 "짝수" if n % 2 == 0 else "홀수"처럼 씁니다. 여러 경우를 값의 모양에 따라 나눌 때는 match 문도 쓸 수 있습니다.
문자열 앞에 f를 붙이면 중괄호 안에 변수나 식을 바로 넣을 수 있습니다. 콜론 뒤에 서식을 지정해 소수점 자리, 폭, 천 단위 구분 기호 등을 정할 수 있고, =를 붙이면 디버깅용으로 식과 값을 함께 출력합니다.
name = "Mina"
price = 12345.678
print(f"{name}님, 합계는 {price:,.2f}원입니다") # 12,345.68
print(f"{name:>10}|") # 오른쪽 정렬, 폭 10
print(f"{len(name) * 2}") # 식도 넣을 수 있습니다
print(f"{price=}") # price=12345.678*args, **kwargs로 유연하게 인자를 받으며, 바뀌는 값은 기본값으로 쓰지 않습니다.if/elif/else, for, while로 쓰고, 문자열은 f-문자열로 만듭니다.
댓글 0개
로그인 · 로그인하면 댓글을 남길 수 있습니다.
첫 댓글을 남겨 보세요.