Python을 처음 공부할 때 가장 먼저 익혀야 하는 것은 문법 자체보다 값을 저장하고, 계산하고, 조건에 따라 실행 흐름을 바꾸는 방법이다.
이 글에서는 Python 3 기준으로 실행 방법, 변수와 자료형, 문자열, 연산자, 조건문, 반복문까지 하나의 흐름으로 정리한다.
이 글의 코드는 Python 3 기준이다. Python 2에서 사용하던
raw_input()이나
Python은 크게 두 가지 방식으로 실행할 수 있다.
터미널에서 Python을 실행하면 한 줄씩 코드를 입력하고 바로 결과를 확인할 수 있다.
python
Windows에서는 환경에 따라 다음 명령을 사용할 수도 있다.
py
인터프리터가 실행되면 다음처럼 간단한 계산을 바로 해볼 수 있다.
>>> 2 + 3
5
>>> "python".upper()
'PYTHON'
짧은 문법을 확인하거나 함수의 동작을 빠르게 실험할 때 유용하다.
.py 파일 실행실제 프로그램은 보통 .py 파일로 작성한다.
print("Hello, Python!")
app.py로 저장했다면 다음처럼 실행한다.
python app.py
코드가 길어질수록 파일 단위로 작성하는 방식이 기본이 된다.
환경 문제를 해결할 때 가장 먼저 확인할 것 중 하나가 Python 버전이다.
python --version
Python 코드 안에서는 다음처럼 확인할 수도 있다.
import sys
print(sys.version)
print(sys.version_info)
특히 라이브러리 설치 오류나 문법 오류가 발생했을 때는 내가 어떤 Python을 실행하고 있는지 먼저 확인하는 습관이 중요하다.
프로젝트마다 필요한 라이브러리 버전은 다를 수 있다.
Python 기본 기능만으로도 가상환경을 만들 수 있다.
python -m venv .venv
Windows:
.venv\Scripts\activate
macOS/Linux:
source .venv/bin/activate
가상환경을 사용하면 프로젝트별로 패키지를 독립적으로 관리할 수 있다.
가장 단순한 출력은 print()로 시작한다.
print("Hello, Python!")
여러 값을 함께 출력할 수도 있다.
name = "seungjun"
age = 30
print(name, age)
Python 3에서 print는 함수이므로 괄호를 사용한다.
한 줄 주석은 #으로 작성한다.
# API 응답에서 활성 사용자만 필터링한다.
active_users = 120
좋은 주석은 코드가 무엇을 하는지 반복해서 설명하기보다, 왜 그렇게 작성했는지를 설명하는 편이 좋다.
# 외부 API가 초 단위 값을 요구하므로 밀리초를 초로 변환한다.
timeout_seconds = timeout_ms / 1000
Python 3의 소스 파일은 기본적으로 UTF-8로 처리된다.
message = "로그인에 성공했습니다."
print(message)
예전처럼 파일 첫 줄에 매번 인코딩 주석을 넣을 필요는 없다. 다른 인코딩을 사용할 특별한 이유가 있을 때만 명시하면 된다.
Python에서는 별도의 타입 선언 없이 변수를 만들 수 있다.
user_count = 150
service_name = "my-api"
is_active = True
count = 10
count = 20
두 번째 줄에서 count가 가리키는 값이 바뀐다.
Python에서는 일반 변수와 함수 이름에 snake_case를 주로 사용한다.
request_count = 10
def calculate_total_price():
pass
클래스 이름은 보통 PascalCase를 사용한다.
class UserService:
pass
숫자로 시작하는 이름은 사용할 수 없다.
intorder_count = 120
retry_count = 3
Python의 정수는 큰 값을 다룰 때 별도의 long 타입으로 바꿀 필요가 없다.
big_number = 10 ** 100
floatconversion_rate = 3.25
temperature = 21.7
value = 5.23e-3
boolis_logged_in = True
has_permission = False
None값이 아직 없거나 의도적으로 비어 있음을 나타낼 때 사용한다.
selected_user = None
if selected_user is None:
print("선택된 사용자가 없습니다.")
문자열은 작은따옴표와 큰따옴표 모두 사용할 수 있다.
name = "Python"
message = 'Hello'
여러 줄 문자열은 삼중 따옴표를 사용할 수 있다.
template = """
안녕하세요.
회원가입이 완료되었습니다.
서비스를 이용해 주세요.
"""
print("첫 번째 줄\n두 번째 줄")
print("이름\t점수")
| 표현 | 의미 |
|---|---|
\n | 줄바꿈 |
\t | 탭 |
\\ | 역슬래시 |
\" | 큰따옴표 |
정규식이나 Windows 경로처럼 역슬래시가 많은 문자열은 raw string이 편하다.
path = r"C:\Users\newwo\project"
name = "kim"
score = 92
print(f"{name}님의 점수는 {score}점입니다.")
계산식도 넣을 수 있다.
price = 12000
quantity = 3
print(f"총 금액: {price * quantity:,}원")
소수점 자리수도 지정할 수 있다.
rate = 0.123456
print(f"{rate:.2%}")
Python 3에서 사용자 입력은 input()으로 받는다.
name = input("이름을 입력하세요: ")
print(f"안녕하세요, {name}님!")
input()의 결과는 항상 문자열이다.
age = int(input("나이를 입력하세요: "))
print(age + 1)
Python은 {} 대신 들여쓰기로 코드 블록을 구분한다.
is_admin = True
if is_admin:
print("관리자 페이지를 표시합니다.")
print("프로그램 종료")
일반적으로 공백 4칸을 사용한다.
Python에서는 보기 좋은 들여쓰기가 단순 스타일이 아니라 문법의 일부다.
a = 13
b = 3
print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(a // b)
print(a % b)
print(a ** b)
| 연산자 | 의미 |
|---|---|
+ | 덧셈 |
- | 뺄셈 |
* | 곱셈 |
/ | 일반 나눗셈 |
// | 버림 나눗셈 |
% | 나머지 |
** | 거듭제곱 |
Python 3에서 정수끼리 /를 사용해도 결과는 실수다.
13 / 3
4.333333333333333
정수 몫이 필요하면 //를 사용한다.
13 // 3
4
age = 20
print(age == 20)
print(age != 20)
print(age > 18)
print(age >= 20)
print(age < 30)
print(age <= 20)
age = 25
is_member = True
can_purchase = age >= 19 and is_member
주요 논리 연산자는 and, or, not이다.
roles = ["user", "editor", "admin"]
print("admin" in roles)
print("guest" not in roles)
status_code = 200
if status_code == 200:
print("요청 성공")
stock = 0
if stock > 0:
print("구매 가능")
else:
print("품절")
score = 85
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
else:
grade = "D"
조건은 위에서 아래 순서로 검사되며 처음으로 참이 된 블록만 실행된다.
다음 값들은 거짓으로 평가된다.
False
None
0
0.0
""
[]
{}
set()
users = []
if not users:
print("사용자가 없습니다.")
while 반복문retry_count = 0
while retry_count < 3:
print(f"{retry_count + 1}번째 요청")
retry_count += 1
while True:
command = input("명령어: ")
if command == "quit":
break
for 반복문users = ["kim", "lee", "park"]
for user in users:
print(user)
range()for number in range(5):
print(number)
enumerate()users = ["kim", "lee", "park"]
for index, user in enumerate(users, start=1):
print(index, user)
break와 continuelogs = ["INFO", "INFO", "ERROR", "INFO"]
for log in logs:
if log == "ERROR":
print("오류 발견")
break
numbers = [1, -1, 3, -5, 8]
for number in numbers:
if number < 0:
continue
print(number)
elsetarget = "admin"
roles = ["user", "editor"]
for role in roles:
if role == target:
print("권한 발견")
break
else:
print("해당 권한이 없습니다.")
break로 종료되지 않았을 때 else가 실행된다.
orders = [12000, 35000, 8000, 51000]
total = 0
high_value_count = 0
for price in orders:
if price <= 0:
continue
total += price
if price >= 30000:
high_value_count += 1
average = total / len(orders)
print(f"총 주문 금액: {total:,}원")
print(f"평균 주문 금액: {average:,.0f}원")
print(f"3만 원 이상 주문: {high_value_count}건")
=와 ===는 값을 할당하고 ==는 두 값이 같은지 비교한다.
/와 //5 / 2의 결과는 2.5, 5 // 2의 결과는 2다.
is와 ====는 값이 같은지 비교하고 is는 같은 객체인지 비교한다. None 검사에는 보통 is를 사용한다.
if value is None:
...
.py 파일로 실행할 수 있다./는 일반 나눗셈, //는 버림 나눗셈이다.if, for, while을 이용하면 프로그램의 실행 흐름을 제어할 수 있다.break, continue, enumerate(), range()를 익히면 반복 로직을 간결하게 작성할 수 있다.