첫 프로그램 실행부터 들여쓰기·주석 완벽 정리
파이썬(Python) 프로그래밍을 시작할 때 가장 먼저 알아야 할 뼈대, 바로 기본 문법입니다. 파이썬은 다른 언어에 비해 직관적이고 간결하지만, 문법적 특징을 정확히 이해해야 오류 없는 코드를 작성할 수 있습니다.
이번 글에서는 첫 번째 파이썬 프로그램을 작성하고 실행하는 방법부터, 파이썬의 가장 큰 특징인 들여쓰기 규칙과 주석 작성법까지 알기 쉽게 정리해 드립니다.
1. 첫 번째 파이썬 파일 작성 및 실행하기
파이썬은 대표적인 인터프리터 언어(Interpreter Language)입니다. 즉, 별도의 복잡한 컴파일 과정 없이 작성한 소스 코드를 인터프리터가 한 줄씩 읽어가며 즉시 실행합니다.
실습: hello.py 작성하기
텍스트 편집기(VS Code 등)를 열고 아래와 같이 코드를 작성한 뒤 hello.py 이름으로 저장합니다.
# hello.py
print("Hello, World!")
터미널에서 실행하기
명령 프롬프트(CMD)나 터미널을 열고 파일이 저장된 경로로 이동한 뒤 아래 명령어를 입력합니다.
# 파일이 있는 경로로 이동
cd [파일 경로]
# 파이썬 파일 실행
python hello.py
2. 파이썬의 핵심: 들여쓰기 (Indentation)
다른 프로그래밍 언어(C언어, 자바 등)에서 코드의 들여쓰기는 단순히 가독성을 높이기 위한 용도일 뿐입니다. 하지만 파이썬에서 들여쓰기는 문법의 핵심입니다.
파이썬은 중괄호 {} 대신 들여쓰기(Indentation)를 사용하여 코드의 블록(범위)을 구분합니다.
규칙: 동일한 코드 블록 안에서는 반드시 일정한 수의 공백(스페이스 또는 탭)을 유지해야 합니다. 일반적으로 스페이스 4칸을 권장합니다.
올바른 예시:
if 5 > 2: print("Five is greater than two!") # 들여쓰기 적용 완료
주의: 들여쓰기 관련 구문 오류 (IndentationError)
들여쓰기를 지키지 않으면 파이썬은 즉시 구문 오류(IndentationError)를 발생시킵니다.
케이스 1: 들여쓰기를 아예 안 한 경우
if 5 > 2: print("Five is greater than two!") # 에러 발생!케이스 2: 같은 블록 내에서 공백 개수가 다른 경우
if 5 > 2: print("Line 1") # 공백 1칸 print("Line 2") # 공백 여러 칸 -> 에러 발생!
3. 코드의 가독성을 높이는 주석 (Comments)
주석(Comment)은 프로그램이 실행될 때 인터프리터가 무시하고 넘어가는 영역입니다. 코드에 대한 설명을 남기거나, 디버깅 과정에서 특정 코드를 잠시 실행하지 않도록 막을 때 사용합니다.
주석 작성 방법
파이썬의 주석은 # 기호로 시작하며, # 기호부터 해당 줄의 끝까지 모두 주석으로 처리됩니다.
# This is a comment. (코드 설명 주석)
print("Comment Style 1")
print("Comment Style 2") # This is an inline comment (코드 우측 주석)
주석의 주요 활용 목적
코드 설명: 복잡한 로직이나 나중에 기억해야 할 내용을 메모로 남길 때
디버깅(테스트): 코드를 수정하거나 테스트하는 과정에서 특정 줄을 임시로 실행되지 않도록 막을 때
변수, 데이터 타입, 형 변환 및 스코프(Scope) 총정리
앞서 파이썬의 기본 문법과 첫 프로그램을 실행하는 방법을 살펴보았습니다. 이번 글에서는 파이썬 프로그래밍의 핵심이자 데이터를 다루는 뼈대인 변수(Variables), 데이터 타입(Data Types), 형 변환(Casting), 그리고 변수 스코프(Variable Scope)까지 완벽하게 파헤쳐 보겠습니다.
1. 파이썬 변수(Variables)의 개념과 특징
변수(Variable)는 데이터를 저장하는 이름이자, 프로그램에서 값을 저장하고 조작하는 데 사용되는 공간입니다.
다른 언어(C, Java)와의 결정적 차이
C나 Java 같은 언어는 변수를 선언할 때 데이터 타입(int x = 10;)을 앞에 명시해야 합니다. 하지만 파이썬은 동적 타이핑(Dynamic Typing) 언어로, 선언 시 타입을 명시할 필요가 없으며 값을 할당하면 자동으로 타입이 결정됩니다.
파이썬 변수의 실체:
파이썬에서 변수는 직접 값을 담는 상자가 아니라, 특정 값을 가지고 있는 객체를 가리키는 ‘참조자(Reference)’ 역할을 합니다. 즉,
x = 10이라고 쓰면 메모리에 10이라는 객체가 생기고,x가 그 객체를 바라보게 됩니다.
장점: 프로그래밍 제약이 느슨하여 사용이 편리하고 입문하기에 좋습니다.
단점: 의도치 않은 오류가 발생할 가능성이 있으며 변수 사용의 의미가 모호해질 수 있습니다.
2. 다중 변수 할당 기법
파이썬은 여러 변수에 값을 한 번에 할당하거나 컬렉션을 쉽게 풀어서 담는 유용한 문법을 제공합니다.
Python
# 1. 여러 변수에 여러 값 한 번에 할당
x, y, z = "Orange", "Banana", "Cherry"
# 2. 하나의 값을 여러 변수에 동시에 할당
x = y = z = "Orange"
# 3. 컬렉션 풀기 (Unpacking)
fruits = ["apple", "banana", "cherry"]
x, y, z = fruits
3. 파이썬 데이터 타입(Data Types) 총정리
파이썬의 데이터 타입은 기본 데이터 타입과 컬렉션 데이터 타입으로 나뉩니다. 변수의 타입을 확인하고 싶을 때는 type() 함수를 사용합니다.
Python
x = 5 # 정수형 (int)
name = "Alice" # 문자열 (str)
is_active = True # 논리형 (bool)
numbers = [1, 2, 3] # 리스트 (list)
print(x, type(x))
print(name, type(name))
3.1 숫자 (Numeric)
정수 (int): 음수, 양수, 0을 포함하며 크기 제한 없이 처리됩니다.
실수 (float): 부동 소수점 숫자를 저장합니다.
복소수 (complex): 실수부와 허수부를 가지며, 허수부는
j로 표현합니다. (d = 1 + 2j)
3.2 문자열 (String) 및 주요 메서드
문자열은 문자의 시퀀스로 작은따옴표(')나 큰따옴표(")로 표현합니다. 슬라이싱([], [:})과 +, * 연산자를 지원합니다.
멀티라인 문자열: 따옴표 세 개(
'''또는""")를 사용하면 줄바꿈이나 탭을 그대로 유지한 채 여러 줄을 할당할 수 있습니다.f-string (포맷팅): 문자열 앞에
f를 붙이고 중괄호{}안에 변수나 연산을 넣어 직관적으로 문자열을 조합할 수 있습니다.Python
age = 36 txt = f"My name is John, I am {age} years old." price = 59.5 print(f"Price: {price:.2f} dollars") # 소수점 둘째 자리까지 고정이스케이프 제어문자:
\n(줄바꿈),\t(탭),\\(백슬래시) 등을 통해 특수 문자를 표현합니다.주요 문자열 메서드:
capitalize(): 첫 글자 대문자 변환lower()/upper(): 소문자/대문자 변환strip(): 양쪽 공백 제거split(구분자): 문자열을 쪼개어 리스트로 반환replace(old, new): 특정 문자열 치환
3.3 부울 (bool)
참(True)과 거짓(False)을 나타내며, 조건문(if)이나 반복문(while) 제어 시 핵심적인 역할을 합니다.
3.4 이진 데이터 (Binary Types)
컴퓨터가 직접 처리하는 0과 1의 원시 바이트 데이터를 다룰 때 사용됩니다.
bytes: 불변(Immutable) 바이트 시퀀스 (b"Hello")bytearray: 가변(Mutable) 바이트 시퀀스 (값 수정 가능)memoryview: 메모리를 복사하지 않고 원본 이진 데이터를 직접 참조하여 대용량 처리 시 효율성 제공
3.5 없음 (NoneType)
값이 없거나 아직 정해지지 않은 상태(None)를 명시적으로 나타냅니다. 빈 문자열이나 0과는 다릅니다. 함수가 명시적 반환값이 없을 때 기본적으로 None을 반환합니다.
4. 올바른 변수명 작성 규칙
영문자, 숫자, 밑줄(
_)로 구성됩니다.숫자로 시작할 수 없습니다 (
2nd_place(X) ->second_place또는_2nd_place(O)).공백을 포함할 수 없습니다 (
first name(X) -> 스네이크 케이스first_name또는 카멜 케이스firstName권장).대소문자를 엄격하게 구분합니다 (
my_age와My_age는 다른 변수).예약어(
class,def,if등)는 변수명으로 사용할 수 없습니다.
5. 파이썬 형 변환(Casting) 및 내장 함수
사용자로부터 입력받은 값은 기본적으로 문자열(str)이므로, 연산을 위해 숫자로 변환하는 등의 형 변환이 자주 필요합니다.
주요 형 변환 함수:
int(x, base): 정수로 변환 (진수 변환 지원, 예:int("101", 2)-> 5)float(x): 실수로 변환str(x): 문자열로 변환list(s)/tuple(s)/set(s): 컬렉션 간 변환
디버깅을 위한 특별한 함수들
repr(x): 객체의 공식적이고 상세한 문자열 표현(개발자 친화적)을 반환하여 디버깅에 유용합니다. (str(today)는2025-09-25,repr(today)는datetime.date(2025, 9, 25)반환)eval(str): 문자열 내의 파이썬 코드를 그대로 실행하고 결과 객체를 반환합니다. (단, 보안상 신뢰할 수 없는 입력값에는 사용을 피해야 합니다)
6. 변수 스코프(Variable Scope)와 LEGB 규칙
변수가 정의되고 접근할 수 있는 유효 범위를 스코프(Scope)라고 합니다. 파이썬은 변수를 찾을 때 LEGB 규칙 순서대로 검색합니다.
| 순서 | 약어 | 스코프 명칭 | 설명 |
| 1 | Local | 지역 스코프 | 현재 함수 내에서 정의된 변수 |
| 2 | Enclosing | 둘러싼 스코프 | 중첩 함수에서 상위 함수의 변수 영역 (nonlocal 키워드 사용) |
| 3 | Global | 전역 스코프 | 모듈 파일 최상단에 정의된 변수 (global 키워드 사용) |
| 4 | Built-in | 내장 스코프 | 파이썬 기본 제공 함수 및 상수 (print, len 등) |
Python
x = "Global" # Global 스코프
def outer():
x = "Enclosing" # Enclosing 스코프
def inner():
x = "Local" # Local 스코프
print(x) # 출력: Local
inner()
print(x) # 출력: Enclosing
outer()
print(x) # 출력: Global연산자의 종류부터 우선순위까지 총정리
앞서 파이썬의 기본 문법과 변수, 데이터 타입, 그리고 형 변환과 스코프 규칙까지 살펴보았습니다. 이번 글에서는 변수와 값들을 활용해 실질적인 연산을 수행하는 파이썬 연산자(Operators)의 7가지 종류와 연산자 우선순위를 완벽하게 파헤쳐 보겠습니다.
1. 파이썬 연산자 개요
연산자(Operator)는 변수나 값에 대해 특정한 연산을 수행하도록 지시하는 기호입니다. 파이썬은 수학적 계산부터 데이터 비교, 메모리 주소 확인까지 총 7가지의 강력한 연산자 그룹을 제공합니다.
2. 산술 연산자 (Arithmetic Operators)
수학적인 계산을 수행할 때 사용하는 가장 기본적인 연산자입니다.
| 연산자 | 설명 | 예시 및 결과 |
+ | 더하기 | 5 + 3 -> 8 |
- | 빼기 | 5 - 3 -> 2 |
* | 곱하기 | 5 * 3 -> 15 |
/ | 나누기 (소수점 포함) | 5 / 3 -> 1.6667 |
** | 제곱 (거듭제곱) | 5 ** 3 -> 125 |
// | 정수 몫 (내림 나눗셈) | 5 // 3 -> 1 |
% | 나머지 | 5 % 3 -> 2 |
3. 비교 연산자 (Comparison / Relational Operators)
두 값을 비교하여 그 결과를 부울(True 또는 False) 값으로 반환합니다. 조건문(if)이나 반복문(while)에서 핵심적으로 사용됩니다.
| 연산자 | 설명 | 예시 및 결과 |
== | 값이 같음 | 5 == 3 -> False |
!= 또는 <> | 값이 같지 않음 | 5 != 3 -> True |
> | 크다 | 5 > 3 -> True |
< | 작다 | 5 < 3 -> False |
>= | 크거나 같다 | 5 >= 3 -> True |
<= | 작거나 같다 | 5 <= 3 -> False |
4. 논리 연산자 (Logical Operators)
여러 개의 조건을 조합하거나 참/거짓(Boolean) 값을 반전시킬 때 사용합니다. (예: a = 10, b = 20)
| 연산자 | 설명 | 예시 및 결과 |
and | 두 조건이 모두 참일 때 True | True and False -> False |
or | 둘 중 하나라도 참이면 True | True or False -> True |
not | 참/거짓을 반대로 뒤집음 (부정) | not True -> False |
5. 할당 연산자 (Assignment Operators)
변수에 값을 할당(=)하거나, 연산을 수행한 후 결과를 바로 변수에 업데이트(복합 할당)하는 데 사용됩니다.
| 연산자 | 설명 | 대등한 표현 |
= | 값 할당 | a = 5 |
+= | 더한 후 할당 | a += 3 (a = a + 3) |
-= | 뺀 후 할당 | a -= 3 (a = a - 3) |
*= | 곱한 후 할당 | a *= 3 (a = a * 3) |
/= | 나눈 후 할당 | a /= 3 (a = a / 3) |
%= | 나머지를 구한 후 할당 | a %= 3 (a = a % 3) |
**= | 거듭제곱 후 할당 | a **= 3 (a = a ** 3) |
//= | 몫을 구한 후 할당 | a //= 3 (a = a // 3) |
6. 비트(Bitwise) 연산자
데이터를 0과 1의 이진수(비트) 단위로 직접 조작하여 연산하는 고급 연산자입니다. (주로 시스템 로우레벨 제어, 네트워크 통신 등에 쓰입니다.)
| 연산자 | 설명 | 예시 (5 & 3) |
& | 비트 단위 AND | 5 & 3 -> 1 (이진수 계산) |
| | 비트 단위 OR | 5 | 3 -> 7 |
^ | 비트 단위 XOR (배타적 논리합) | 5 ^ 3 -> 6 |
~ | 비트 단위 NOT (보수) | ~5 -> -6 |
<< | 비트 왼쪽 시프트 (Left Shift) | 5 << 1 -> 10 |
>> | 비트 오른쪽 시프트 (Right Shift) | 5 >> 1 -> 2 |
7. 멤버십 연산자 (Membership Operators)
문자열, 리스트, 튜플 등 시퀀스 데이터 안에 특정 값이 포함되어 있는지 확인합니다.
| 연산자 | 설명 | 예시 및 결과 |
in | 시퀀스에 값이 포함되어 있으면 True | 5 in [1, 2, 3, 4, 5] -> True |
not in | 시퀀스에 값이 포함되어 있지 않으면 True | 6 not in [1, 2, 3, 4, 5] -> True |
8. 식별 연산자 (Identity Operators)
앞서 변수 챕터에서 다룬 ‘참조자’ 개념과 밀접합니다. 두 객체가 동일한 메모리 위치(주소)를 가리키고 있는지 확인합니다.
| 연산자 | 설명 | 예시 |
is | 두 객체가 동일한 메모리 주소를 가리키면 True | a is b |
is not | 두 객체가 서로 다른 메모리 주소를 가리키면 True | a is not b |
a = [1, 2, 3]
b = a
c = [1, 2, 3]
print(a is b) # True (a와 b는 완전히 같은 객체 참조)
print(a is c) # False (값은 같지만 메모리 공간이 다른 별개의 객체)
print(a is not c) # True
9. 연산자 우선순위 (Operator Precedence)
하나의 수식에 여러 연산자가 섞여 있을 때, 파이썬이 어떤 연산을 먼저 처리할지 결정하는 규칙입니다. 가독성과 오류 방지를 위해 명시적인 괄호 () 사용을 강력히 권장합니다.
(우선순위가 높은 것부터 나열)
**(지수/거듭제곱)~,+,-(비트 보수, 단항 플러스/마이너스)*,/,%,//(곱하기, 나누기, 나머지, 몫)+,-(덧셈과 뺄셈)>>,<<(비트 시프트)&(비트 AND)^,\|(비트 XOR, OR)<=,<,>,>=(크기 비교 연산자)==,!=,<>(동등 비교 연산자)=,+=,-=등 (할당 연산자)is,is not(식별 연산자)in,not in(멤버십 연산자)not,or,and(논리 연산자)
연산자 우선순위 실전 예시 코드
# 1. 괄호가 없을 때 vs 있을 때
print(10 + 2 * 3) # 16 (곱셈이 먼저: 10 + 6)
print((10 + 2) * 3) # 36 (괄호가 먼저: 12 * 3)
# 2. 거듭제곱의 우선순위
print(2 + 3 ** 2) # 11 (거듭제곱 먼저: 2 + 9)
print(-3 ** 2) # -9 (거듭제곱 후 음수 부호 적용: -(3**2))
print((-3) ** 2) # 9 (괄호 안의 음수가 제곱됨)
# 3. 사칙연산의 방향 (왼쪽에서 오른쪽)
print(10 / 2 * 5) # 25.0 ( (10 / 2) * 5 )
print(10 * 2 // 3) # 6 ( (10 * 2) // 3 )
# 4. 논리 연산자 우선순위 (not > and > or)
print(True or False and False) # True (False and False 먼저 처리 후 or)
print(not False and True) # True (not False -> True 이므로 True and True)입출력, 문자열 포맷팅, 이스케이프 시퀀스 및 아스키(ASCII) 총정리
앞서 파이썬의 기본 문법, 변수와 데이터 타입, 그리고 연산자의 종류와 우선순위를 살펴보았습니다. 이번 글에서는 사용자와 소통하고 데이터를 주고받는 핵심 기능인 파이썬의 기본 입출력(Input/Output)과 문자열 포맷팅, 그리고 특수 문자를 다루는 이스케이프 시퀀스와 아스키(ASCII) 코드의 모든 것을 완벽하게 파헤쳐 보겠습니다.
1. 파이썬 문자열 포맷팅 4가지 방법
문자열 안에 변수나 동적인 값을 삽입하여 보기 좋게 출력하는 포맷팅 방식은 파이썬 버전과 목적에 따라 네 가지로 나뉩니다.
1) % Format 연산자 (Old Style)
C 언어의 printf 스타일에 익숙한 사용자에게 친숙한 방식입니다. 문자열 내에 %s(문자열), %d(정수), %f(실수) 등의 타입 지정자를 사용합니다.
name = "Alice"
age = 30
print("Name: %s, Age: %d" % (name, age)) # Name: Alice, Age: 30
print('이름: %s, 나이: %d, 키: %3.2f' % ("영수", 25, 175.3))
2) str.format() 함수 (New Style)
Python 2.6에서 도입된 방식으로, 중괄호 {}를 플레이스홀더로 사용합니다. 위치 인자, 인덱스 인자, 키워드 인자를 지원하여 가독성을 높였습니다.
name = "Alice"
age = 30
price = 19.99
# 위치 인자 및 포맷 지정
print("이름: {}, 나이: {}, 가격: {:.2f}".format(name, age, price))
# 인덱스 인자
print("나이: {1}, 이름: {0}".format(name, age))
# 키워드 인자
print("이름: {n}, 나이: {a}".format(n=name, a=age))
3) f-string (Formatted String Literals, Python 3.6+)
[가장 권장]
현재 파이썬 생태계에서 가장 현대적이고 강력하며 가장 성능이 뛰어난 포맷팅 방식입니다. 문자열 앞에 f를 붙이고 {} 안에 변수나 파이썬 표현식을 직접 적을 수 있습니다.
name = "Alice"
age = 30
price = 19.99
# f-string 적용
print(f"이름: {name}, 나이: {age}, 가격: {price:.2f}")
print(f"10 + 5 = {10 + 5}") # 내부 연산식 포함 가능
4) string.Template (Template Strings)
사용자 입력값 등을 다룰 때 보안상의 이유(임의의 파이썬 코드 실행 방지)로 eval()이나 f-string 사용이 위험할 때 활용합니다.
from string import Template
template_str = Template("이름: $name, 나이: ${age}살")
message = template_str.substitute(name="Alice", age=30)
print(message) # 이름: Alice, 나이: 30살
문자열 포맷팅 방식 비교 요약
| 특징 | % 연산자 | str.format() | f-string | string.Template |
| 가독성 | 낮음 | 좋음 | 가장 좋음 | 좋음 |
| 성능 | 상대적으로 느림 | 보통 | 가장 빠름 | 보통 |
| 권장 여부 | 비권장 (레거시) | 유효 | 대부분 상황에서 권장 | 보안이 중요할 때 |
2. 콘솔 출력: print() 함수의 모든 것
print() 함수는 데이터를 화면에 출력할 때 사용하는 가장 기본적인 내장 함수입니다.
print() 함수의 기본 시그니처
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
*objects: 출력할 객체들 (쉼표로 여러 개 전달 가능)sep: 여러 객체 사이를 이어줄 구분자 (기본값: 공백' ')end: 출력이 끝난 후 추가할 문자열 (기본값: 줄바꿈'\n')file: 출력할 대상 파일 지정 (기본값: 표준 출력sys.stdout)flush: 출력 버퍼를 강제로 비울지 여부 (기본값:False)
print() 활용 예시
# 여러 객체 및 sep, end 옵션
print("Hello", "World", 123, sep="-") # Hello-World-123
print("Hello", end="") # 줄바꿈 없이 이어 붙이기
print("World") # HelloWorld 출력
3. 콘솔 입력: input() 함수의 활용
사용자로부터 콘솔 입력을 받아 처리할 때 사용합니다. input()은 항상 입력받은 값을 문자열(str)로 반환하므로, 숫자가 필요할 때는 형 변환(int(), float())을 거쳐야 합니다.
# 1. 단일 값 입력
name = input("Enter your name: ")
age = int(input("Enter your age: "))
# 2. 공백을 기준으로 여러 값 한 번에 입력받기
x, y = input("Enter two numbers separated by space: ").split()
x, y = int(x), int(y)
print(f"Sum: {x + y}")
# 3. 리스트 형태로 숫자 여러 개 입력받기
numbers = [int(n) for n in input("Enter numbers: ").split()]
print(f"Numbers: {numbers}")
4. 파일 출력과 버퍼링 제어 (flush=True)
print() 함수의 file 인자를 사용하면 콘솔 화면이 아닌 텍스트 파일에 직접 내용을 기록할 수 있습니다. 이때 with 문을 사용하면 파일을 안전하게 열고 자동으로 닫아줍니다.
file_name = "print_output.txt"
# 파일에 쓰기 (with 문 사용)
with open(file_name, "w", encoding='utf-8') as f:
print("안녕하세요, 파일에 출력합니다!", file=f)
print(f"이름: 파이썬, 버전: 3", file=f)
print(1, 2, 3, sep='-', end='.\n', file=f)
flush=True (버퍼링 강제 해제)
컴퓨터는 성능 최적화를 위해 출력 데이터를 임시 공간(버퍼)에 모아두었다가 한꺼번에 처리(버퍼링)합니다. 하지만 실시간 출력이 필요하거나 시스템 비정상 종료 시 데이터 유실을 막고 싶을 때는 flush=True를 지정하여 버퍼를 즉시 비우도록 강제할 수 있습니다.
import time
# 버퍼링으로 인해 출력이 지연될 수 있음
print("이 메시지는 바로 출력됩니다.", end=' ', flush=True)
time.sleep(2)
print(" 2초 후 출력됩니다.")
5. 특수 문자 처리를 위한 이스케이프 시퀀스 (Escape Sequences)
문자열 내에서 백슬래시(\)와 조합하여 눈에 보이지 않는 제어 문자를 표현하거나 충돌하는 따옴표를 해결하는 문자 조합입니다.
| 이스케이프 문자 | 설명 | 예시 코드 |
\n | 줄 바꿈 (Newline, 개행) | print("Hello\nWorld") |
\t | 수평 탭 (Tab) | print("Name:\tAlice") |
\r | 캐리지 리턴 (커서를 맨 앞으로 이동) | print("Hello\rWorld") -> World |
\b | 백스페이스 (앞 문자 하나 지움) | print("Hell\bo") |
\' / \" | 작은따옴표 / 큰따옴표 직접 표현 | print("그는 \"안녕\"이라 말했다.") |
\\ | 백슬래시(\) 자체를 표현 | print("경로: C:\\Users\\Public") |
\uHHHH | 16비트 유니코드 문자 표현 | print("\uAC00") -> 가 |
6. 백슬래시 무시: Raw 문자열 (r"")
윈도우 파일 경로 등을 다룰 때 백슬래시(\)가 이스케이프 문자로 오인되어(\n이 줄바꿈으로 해석되는 등) 문제가 발생할 수 있습니다. 이때 문자열 앞에 r 또는 R을 붙여 Raw 문자열로 선언하면 백슬래시의 특수 기능을 완전히 무시하고 있는 그대로 처리합니다.
# 일반 문자열 (\n이 줄바꿈으로 해석되어 오류 발생 가능)
print("C:\new\text.txt")
# Raw 문자열 (이스케이프 시퀀스를 무시하고 경로 그대로 출력)
print(r"C:\new\text.txt") # 출력: C:\new\text.txt
7. 컴퓨터의 문자 약속: 아스키(ASCII) 코드와 유니코드
컴퓨터는 텍스트를 그대로 이해하지 못하고 숫자로 변환하여 처리합니다.
아스키 (ASCII): 7비트를 사용하여 영문 알파벳, 숫자, 기본 특수문자 등 총 128개의 부호를 숫자에 매핑한 전통적인 표준 인코딩입니다. (예: 대문자
A는65, 소문자a는97)유니코드 (Unicode): 아스키 코드가 한글이나 한자 등을 표현하지 못하는 한계를 극복하기 위해 전 세계 모든 문자를 하나의 통일된 체계로 다루도록 만든 표준입니다.
파이썬의 문자 함수:
ord(c): 특정 문자의 유니코드(아스키) 정수 값을 반환합니다.print(ord('A')) # 65 print(ord('가')) # 44032 (유니코드 값)