본문 바로가기
  • 한컴 AI 아카데미 AI개발자 4기
한컴 AI 아카데미

[스나이퍼팩토리] 한컴 AI아카데미 4기 10주차 파이썬!!!

by 타스타로스 2026. 3. 13.

파이썬(python) 이란?

파이썬(Python)은 1991년 네덜란드의 귀도 반 로섬(Guido van Rossum)이 개발한 인터프리터 언어다. 귀도는 자신이 좋아하는 코미디 쇼 '몬티 파이썬의 날아다니는 서커스(Monty Python's Flying Circus)'에서 파이썬이라는 이름을 따왔다.

인터프리터 언어란 소스 코드를 한 줄씩 해석해 즉시 실행하고 결과를 바로 확인할 수 있는 언어를 말한다.

파이썬의 사전적 의미는 '고대 신화에 나오는 파르나소스 산 동굴에 살던 큰 뱀'이다. 아폴로 신이 델파이에서 파이썬을 퇴치했다는 이야기가 전해진다. 파이썬 책 표지와 아이콘에 뱀 모양이 많은 이유가 바로 여기에 있다

파이썬은 공동 작업과 유지 보수가 쉽고 편리하다. 이 때문에 다른 언어로 작성된 많은 프로그램이 파이썬으로 재작성되고 있다. 국내에서도 파이썬의 가치가 인정받아 사용자층이 넓어지고 있으며, 파이썬으로 프로그램을 개발하는 업체도 늘고 있다.

파이썬의 특징

1. 파이썬은 인간다운 언어이다.

프로그래밍이란 인간이 생각하는 것을 컴퓨터에 지시하는 행위이다. 파이썬은 사람이 생각하는 방식을 그대로 표현할 수 있는 언어이다. 따라서 파이썬을 사용하면 컴퓨터의 사고 체계에 맞추어 프로그래밍하려고 애쓸 필요가 없다. 프로그램을 구상하자마자 머릿속에서 생각한 대로 코드를 술술 써 내려갈 수 있다.

2. 문법이 쉬워 빠르게 배울 수 있다.

프로그래밍 경험이 조금이라도 있다면 파이썬의 자료형, 함수, 클래스 만드는 법, 라이브러리 및 내장 함수 사용방법 등

공부하기에 쉬운 점들이 가득하다

3. 무료이지만 강력하다.

파이썬은 오픈 소스이다 사용료 걱정 없이 언제든 누구든 내려받아 사용할 수 있다

물론 다른 무료 프로그램들도 많이 있지만 반복연산이 많은 프로그램보다 간단한 프로그램을 더 잘 만들 수 있지만 실행속도가 빠르고 철저한 들여 쓰기 및 각종 방법들로 에러를 찾기 쉽고 속도가 빠르다

4. 간결하다.

귀도는 파이썬을 의도적으로 간결하게 만들었다. (Perl)과 같은 프로그래밍 언어가 100가지 방법으로 1가지 일을 처리할 수 있다면, 파이썬은 가장 좋은 방법 1가지만 사용하는 것을 선호한다. 이 간결함의 철학은 파이썬 문법에도 그대로 녹아 있어 파이썬 프로그래밍을 하는 사람들은 잘 정리된 소스 코드를 볼 수 있다. 덕분에 다른 사람이 작업한 소스 코드를 이해하기 쉽고 공동 작업과 유지 보수가 편리하다

5. 파이썬과 자바스크립트 비교

파이썬과 자바스크립트는 문법적으로 비슷해 보이지만, 조건을 묶는 괄호나 코드의 범위를 정하는 중괄호 사용법에서 큰 차이가 있습니다. '나무 10번 찍기' 예제를 통해 두 언어를 비교해 드릴게요.

 1. 파이썬 (Python:파이썬) 코드

파이썬은 중괄호({ }) 대신 **들여 쓰기(Indentation)**로 코드의 범위를 정하는 것이 특징입니다.

Python
 
tree_hit = 0
while tree_hit < 10:
    tree_hit = tree_hit + 1
    # if문을 활용한 조건 검사
    if tree_hit < 10:
        print(f"나무를 {tree_hit}번 찍었습니다.")
    
    # 10번이 되면 출력
    if tree_hit == 10:
        print("나무가 넘어갑니다.")
  • tree_hit:트리 힛 / print:프린트

2. 자바스크립트 (JavaScript:자바스크립트) 코드

Node.js나 브라우저 환경에서 실행할 수 있는 자바스크립트 코드입니다. 중괄호와 세미콜론(;)을 사용합니다.

JavaScript
 
let treeHit = 0;
while (treeHit < 10) {
    treeHit = treeHit + 1;
    
    if (treeHit < 10) {
        console.log(`나무를 ${treeHit}번 찍었습니다.`);
    }

    if (treeHit === 10) {
        console.log("나무가 넘어갑니다.");
    }
}
  • let:렛 / console.log:콘솔 로그

3. 두 언어의 명확한 차이점 비교

특징 파이썬 (Python) 자바스크립트 (JS)
변수 선언 변수명만 적음 (a = 0) let 또는 const 사용
조건문 괄호 보통 생략함 (while a < 10:) 반드시 괄호 사용 (while (a < 10))
코드 범위 들여쓰기로 구분 **중괄호 { }**로 구분
문장 끝 줄 바꿈으로 끝남 세미콜론 ;으로 끝남 (생략 가능)
문자열 변수 f"문자열 {변수}" `문자열 ${변수}` (백틱 사용)

💡 학습 팁 (Tip:팁)

  • 파이썬은 들여 쓰기가 한 칸이라도 틀리면 에러가 나기 때문에 줄 맞춤이 아주 중요합니다.
  • 자바스크립트는 중괄호 덕분에 줄 맞춤에 조금 더 자유롭지만, 괄호를 열고 닫는 것을 잊으면 안 됩니다.

 

파이썬 기초 문법

듀플( ), 리스트[ ], 딕셔너리{ }

파이썬에서 데이터를 담는 세 가지 대표적인 바구니인 튜플(Tuple:튜플), 리스트(List:리스트), **딕셔너리(Dictionary:딕셔너리)**의 차이점을 명확히 정리해 드릴게요.

가장 큰 차이는 **"안에 담긴 내용을 바꿀 수 있는가?"**와 **"어떻게 데이터를 찾는가?"**에 있습니다.


1. 한눈에 비교하는 특징

구분 튜플 (Tuple) 리스트 (List) 딕셔너리 (Dict)
기호 ( ) 소괄호 [ ] 대괄호 { } 중괄호
수정 가능 여부 불가능 (Immutable) 가능 (Mutable) 가능 (Mutable)
데이터 순서 있음 (인덱스 사용) 있음 (인덱스 사용) 있음 (3.7버전 이후)
데이터 접근 a[0] (순서로 찾기) a[0] (순서로 찾기) a['key'] (이름으로 찾기)
비유 읽기 전용 문서 자유로운 메모장 이름표 붙은 사물함

2. 상세 설명

① 튜플 (Tuple:튜플)

  • 특징: 한 번 만들면 내용을 절대 고칠 수 없습니다.
  • 용도: 바뀌면 안 되는 데이터(예: GPS 좌표, 날짜 정보)를 안전하게 보관할 때 씁니다.
  • 장점: 리스트보다 메모리를 적게 먹고 속도가 빠릅니다.

② 리스트 (List:리스트)

  • 특징: 자유롭게 넣고(append), 빼고(pop), 고칠 수 있습니다.
  • 용도: 순서가 중요한 데이터 목록(예: 할 일 목록, 사용자 명단)을 관리할 때 가장 많이 씁니다.

③ 딕셔너리 (Dictionary:딕셔너리)

  • 특징: 키(Key)와 값(Value)이 한 쌍으로 이루어져 있습니다.
  • 용도: 데이터에 '이름표'를 붙여서 관리하고 싶을 때(예: 회원 정보 {이름: '철수', 나이: 37}) 씁니다.

3. 코드 예시 (Example:이그잼플)

Python
 
# 1. 튜플: 수정하면 에러 발생!
my_tuple = (1, 2, 3)
# my_tuple[0] = 5  <- (Error:에러)

# 2. 리스트: 자유로운 수정
my_list = [1, 2, 3]
my_list[0] = 5    # [5, 2, 3]으로 바뀜

# 3. 딕셔너리: 이름표(키)로 접근
my_dict = {'age': 37, 'name': 'James'}
print(my_dict['age'])  # 37 출력

4. 콜론(:)의 의미

파이썬에서 :은 **"다음에 오는 코드(들여 쓰기 된 부분)는 나의 소속이다"**라는 것을 선언하는 약속입니다.

  • 함수 정의: def hello(): (데프 헬로우)
  • 조건문: if a == 1: (이프 에이 이퀄 이퀄 일)
  • 반복문: while i <= 3: (와일 아이 레스 댄 이퀄 삼)

이 :이 빠지면 파이썬은 "명령어는 알겠는데, 어디까지가 내 밑으로 들어오는 코드인지 모르겠어!"라며 **SyntaxError(신택스 에러)**를 냅니다.

5. 구조 비교 (파이썬 vs 자바스크립트)

특징 파이썬 (Python) 자바스크립트 (Node.js/React)
조건 시작 while i <= 3 : while (i <= 3) {
본문 구분 들여쓰기 (공백 4칸) } (중괄호로 닫음)
비유 "말 끝에 마침표를 찍는 것" "박스 안에 내용을 넣는 것"

 

파이썬에서 사용하는 연산자

파이썬에서 사용하는 연산자(Operators:오퍼레이터즈)는 크게 7가지 분류로 나눌 수 있습니다. 각 연산자는 특정한 목적에 맞춰 데이터를 처리하는 역할을 합니다.


1. 산술 연산자 (Arithmetic Operators: 어니스메틱 오퍼레이터즈)

수학적 계산을 할 때 사용합니다.

  • +: 더하기
  • -: 빼기
  • *: 곱하기
  • /: 나누기 (결과는 실수)
  • //: 몫 (소수점 버림)
  • %: 나머지
  • **: 거듭제곱

2. 비교 연산자 (Comparison Operators: 컴패리즌 오퍼레이터즈)

두 값을 비교하여 True 또는 False를 반환합니다.

  • ==: 같다
  • !=: 같지 않다
  • > / <: 크다 / 작다
  • >= / <=: 크거나 같다 / 작거나 같다

3. 할당(대입) 연산자 (Assignment Operators: 어사인먼트 오퍼레이터즈)

변수에 값을 저장하거나, 계산 후 바로 저장할 때 사용합니다.

  • =: 대입
  • +=, -=, *=, /=: 연산 후 대입 (예: a += 1은 a = a + 1과 같음)

4. 논리 연산자 (Logical Operators: 라지컬 오퍼레이터즈)

조건문 등을 결합할 때 사용합니다.

  • and: 둘 다 참이면 참
  • or: 하나라도 참이면 참
  • not: 참이면 거짓으로, 거짓이면 참으로 뒤집음

5. 비트 연산자 (Bitwise Operators: 비트와이즈 오퍼레이터즈)

2진수 단위(비트)로 계산할 때 사용합니다.

  • & (AND), | (OR), ^ (XOR), ~ (NOT)
  • <<, >>: 비트 이동(Shift:쉬프트)

6. 멤버 연산자 (Membership Operators: 멤버십 오퍼레이터즈)

리스트나 문자열 안에 특정 값이 있는지 확인할 때 사용합니다.

  • in: 포함되어 있으면 참
  • not in: 포함되어 있지 않으면 참

7. 식별 연산자 (Identity Operators: 아이덴티티 오퍼레이터즈)

두 객체가 메모리상에서 동일한 객체인지 확인합니다.

  • is: 동일한 객체이면 참
  • is not: 동일한 객체가 아니면 참

산술연산자

다른 언어와 마찬가지로 모든 산술 연사자 사용이 가능하다

변수에 숫자 대입하고 계산하기

>>> a = 1
>>> b = 2
>>> a + b
3

a에 1, b에 2를 대입한 후 a와 b를 더하면 3이라는 결괏값을 보여 준다.

조건문 if

>>> a = 3
>>> if a > 1:
...     print("a는 1보다 큽니다.")
...
a는 1보다 큽니다.

이 예제는 a가 1보다 크면 "a는 1보다 큽니다."라는 문장을 출력(print)하라는 뜻이다. a는 3이므로 1보다 크다. 따라서 'a는 1보다 큽니다.'라는 문장이 출력된다.

반복문 for

>>> for a in [1, 2, 3]:
...     print(a)
...
1 
2 
3

for 문을 사용하면 실행할 문장을 여러 번 반복할 수 있다. 위 예는 대괄호([]) 사이에 있는 값을 하나씩 출력한다. 이 코드의 의미는 '[1, 2, 3] 리스트의 앞에서부터 하나씩 꺼내 a 변수에 대입한 후 print(a)를 수행하라'이다. 실행하면 a에 차례대로 1, 2, 3이라는 값이 대입되고 print(a)에 의해 그 값이 차례대로 출력된다.

반복문 while

>>> i = 0
>>> while i < 3:
...     i = i + 1
...     print(i)
...
1
2
3

while이라는 영어 단어의 뜻인 '~인 동안'에서 알 수 있듯이 while 문은 조건이 만족하는 동안 문장을 반복 수행한다. 위 예제는 i 값이 3보다 작은 동안 i = i + 1 print(i)를 수행하라는 뜻이다. i = i + 1은 'i의 값을 1씩 더한다'라는 의미이다. i 값이 3보다 커지면 while 문을 빠져나간다.

1. while vs for in 차이점

구분 while 문 for in 문
핵심 개념 조건 중심 (참이면 반복) 대상 중심 (요소만큼 반복)
언제 쓰는가? 언제 끝날지 모를 때 (조건에 의존) 끝이 정해져 있을 때 (리스트, 튜플 등)
비유 "배가 부를 때까지 먹어라" "접시에 담긴 사과를 다 먹어라"

함수

>>> def add(a, b):
...     return a + b
...
>>> add(3, 4)
7

def는 파이썬에서 함수를 정의할 때 사용하는 예약어이다. 위 예제는 add 함수를 만들고 그 함수를 어떻게 사용하는지 보여 준다. add(a, b)에서 a, b는 입력값, a + b는 결괏값이다. 즉 3, 4가 입력으로 들어오면 3 + 4를 수행하고 그 결괏값인 7을 리턴한다.

def는 파이썬에서 **"함수를 정의한다"**라는 뜻의 **Define(디파인)**의 줄임말입니다.

컴퓨터에게 "이제부터 이런 이름의 명령어를 만들 테니까, 내가 이 이름을 부르면 이 코드를 실행해!"라고 약속하는 신호탄이라고 보시면 됩니다.


1. def의 풀네임과 뜻

  • 풀네임: Define (정의하다: 디파인)
  • : 함수(Function)를 새롭게 만들겠다는 선언입니다.

2. 왜 def를 쓰나요? (함수의 구조)

파이썬에서 함수를 만들 때는 항상 아래와 같은 형식을 지켜야 합니다.

Python
 
def 함수이름(매개변수):  # 1. 정의 (Define)
    # 실행할 코드들...
    print("안녕하세요!")
  1. def: "자, 이제 함수 만든다!" (선언)
  2. 함수이름: 그 함수를 부를 때 쓸 이름 (이름표)
  3. : (콜론): "여기서부터 함수 내용 시작이야!" (본문 시작)

3. 자바스크립트(Node.js/React)와 비교

지금 공부하시는 다른 기술들과 비교해 보면 개념이 훨씬 쉽게 잡히실 거예요.

구분 파이썬 (Python) 자바스크립트 (JS)
키워드 def (Define) function (또는 const + 화살표)
풀네임 Define (디파인) Function (펑션)
예시 def my_func(): function myFunc() { }

💡 정리 (Summary: 서머리)

  • **def**는 Define의 약자입니다.
  • "함수를 정의하겠다"는 뜻이며, 이 뒤에는 항상 함수의 이름과 **콜론(:)**이 따라옵니다.

이제 def라는 글자를 보시면 "아, 이건 새로운 기능을 만드는 중이구나!"라고 바로 이해하시면 됩니다.

 매개변수와 인수의 흐름 (Step-by-Step)

함수가 실행되는 과정을 '붕어빵 틀'과 '반죽'으로 비유해 보면 이렇습니다.

  1. 함수 정의 (def 단계):
    • def make_bread(cream):
    • 여기서 cream이라는 매개변수는 "나는 크림이라는 이름의 재료를 받을 거야"라는 을 짜는 것입니다. (아직 실물은 없음)
  2. 함수 호출 (실행 단계):
    • make_bread("팥")
    • 여기서 "팥"이라는 인수는 실제 틀에 붓는 반죽입니다.
  3. 연결:
    • 함수가 실행되는 순간, 매개변수 = 인수 (cream = "팥")가 되어 함수 내부로 데이터가 쏙 들어갑니다.

⚠️ 주의해야 할 점 

시험이나 코딩 실무에서 가장 자주 하는 실수 2가지를 짚어 드릴게요.

1. 개수 맞추기

매개변수를 2개 만들었으면, 인수도 반드시 2개를 보내야 합니다. (안 보내면 에러!)

  • def add(a, b): $\rightarrow$ 호출할 때 add(10, 20) (O), add(10) (X)

2. 순서 지키기 (위치 인수)

인수는 특별한 언급이 없으면 순서대로 매개변수에 들어갑니다.

  • def intro(name, age): $\rightarrow$ intro(37, "제임스")라고 하면 "안녕하세요 37님, 나이는 제임스입니다"라는 이상한 결과가 나옵니다.

🛠️ 실전 복습: *args와 **kwargs 다시 보기

이제 매개변수 자리에 이 친구들이 왜 오는지 이해가 되실 거예요.

  • def func(*args):: "인수가 몇 개 들어올지 모르니까, 오는 대로 다 묶어서 args라는 매개변수에 담아줘!"
  • def func(**kwargs):: "이름표 붙은 인수들이 들어오면, 다 묶어서 kwargs라는 딕셔너리 매개변수에 담아줘!"

💡 요약 (Summary:서머리)

  • 매개변수(Parameter): 함수 에서 쓰는 이름 (변수)
  • 인수(Argument): 함수 에서 넣어주는 값 (실제 데이터)

파이썬 문자열 함수

파이썬에서 문자열(String:스트링)과 관련된 내장 함수와 메서드는 매우 많지만, 실무나 코딩 테스트에 서 자주 사용하는 핵심 함수들은 약 20~30개 내외로 압축할 수 있습니다.

 

1. 변환 및 수정 (Transformation:트랜스포메이션)

문자열의 형태를 바꾸는 함수들입니다.

  • upper(): 대문자로 변환 (어퍼)
  • lower(): 소문자로 변환 (로워)
  • capitalize(): 첫 글자만 대문자로 변환 (캐피털라이즈)
  • title(): 각 단어의 첫 글자를 대문자로 변환 (타이틀)
  • replace(old, new): 문자열 치환 (리플레이스)
  • split(sep): 특정 문자를 기준으로 문자열 나누기 (스플릿)
  • join(list): 리스트의 요소들을 합쳐서 하나의 문자열로 만들기 (조인)

2. 위치 찾기 및 개수 세기 (Searching:서칭)

특정 문자가 어디에 있는지 확인합니다.

  • count(sub): 특정 문자의 개수 세기 (카운트)
  • find(sub): 특정 문자의 위치(인덱스) 찾기, 없으면 -1 반환 (파인드)
  • index(sub): 특정 문자의 위치 찾기, 없으면 에러 발생 (인덱스)
  • startswith(sub): 특정 문자로 시작하는지 확인 (스타트위드)
  • endswith(sub): 특정 문자로 끝나는지 확인 (엔드위드)

3. 공백 및 문자 제거 (Trimming:트리밍)

불필요한 공백이나 문자를 깎아냅니다.

  • strip(): 양쪽 공백 제거 (스트립)
  • lstrip(): 왼쪽 공백 제거 (엘 스트립)
  • rstrip(): 오른쪽 공백 제거 (알 스트립)

4. 문자열 상태 검사 (Checking:체킹)

문자열이 어떤 종류의 데이터인지 확인하여 True/False를 반환합니다.

  • isdigit(): 모두 숫자인가? (이즈 디지트)
  • isalpha(): 모두 문자인가? (이즈 알파)
  • isalnum(): 문자 또는 숫자인가? (이즈 알넘)
  • isspace(): 모두 공백인가? (이즈 스페이스)

3. 문자열 포매팅 % 예시 (복습 및 심화)

이미 알고 계신 %s, %d 외에 실무에서 자주 쓰는 예시들을 정리해 드릴게요.

기호 의미 예시 출력 결과
%s 문자열 (String) "%s님 환영합니다" % "제임스" 제임스님 환영합니다
%d 정수 (Decimal) "나이: %d세" % 37 나이: 37세
%f 실수 (Float) "키: %fcm" % 175.5 키: 175.500000cm
%.2f 소수점 2자리 "키: %.2fcm" % 175.5 키: 175.50cm
%% 진짜 % 기호 "성공 확률: %d%%" % 100 성공 확률: 100%

 스코프

프로그래밍에서 **스코프(Scope:스코프)**는 변수가 살아있는 '활동 범위' 또는 **'유효 범위'**를 뜻합니다. 쉽게 말해, "내가 선언한 변수를 어디까지 사용할 수 있는가?"를 결정하는 규칙입니다.


1. 스코프의 종류 (파이썬 기준)

가장 크게 두 가지로 나뉩니다.

① 전역 스코프 (Global Scope:글로벌 스코프)

  • 범위: 함수 밖, 프로그램 전체
  • 특징: 프로그램 어디서든 가져다 쓸 수 있는 '공용 물건' 같은 변수입니다.

② 지역 스코프 (Local Scope:로컬 스코프)

  • 범위: 함수 내부
  • 특징: 함수가 실행될 때 태어났다가, 함수가 끝나면 사라지는 '개인용 물건'입니다. 함수 밖에서는 안을 들여다볼 수 없습니다.

2. 코드 예시로 보기

Python
 
x = "전역"  # 함수 밖에서 만든 전역 변수

def my_func():
    y = "지역"  # 함수 안에서 만든 지역 변수
    print(x)    # 전역 변수는 안에서도 보임 (O)
    print(y)    # 자기 구역 변수니까 당연히 보임 (O)

my_func()
print(x)        # 밖에서도 보임 (O)
# print(y)      # (Error:에러) 함수가 끝나서 y는 사라졌음!
  • my_func:마이 펑션

3. 자바스크립트 / React Native에서의 스코프

공부하시는 자바스크립트는 파이썬보다 스코프 규칙이 조금 더 세밀합니다.

  • 함수 스코프: var로 선언한 변수 (함수 단위로 유효)
  • 블록 스코프: let, const로 선언한 변수 (중괄호 { } 단위로 유효)

React Native에서 컴포넌트 내부에서 만든 변수가 다른 컴포넌트에서 안 보이는 이유가 바로 이 스코프 때문입니다. 그래서 데이터를 공유하려면 **Props(프롭스)**로 넘겨줘야 하는 거죠.


4. 왜 스코프를 알아야 하나요?

  • 변수 이름 충돌 방지: 스코프가 다르면 이름이 같아도 서로 다른 변수로 취급됩니다. (예: 우리 집의 '철수'와 옆집의 '철수'는 다름)
  • 메모리 관리: 지역 변수는 제 역할을 다하면 바로 사라지기 때문에 컴퓨터 자원을 아낄 수 있습니다.

💡 요약 (Summary:서머리)

  • 전역(Global): 아파트 단지 공용 놀이터 (누구나 사용 가능)
  • 지역(Local): 우리 집 안 (집 안에서만 사용 가능, 밖에서는 안 보임)

 

 

지금까지 기초적인 파이썬 문법에 대해 간략하게 알아보았다.

지금껏 학습을 해 오면서 이 파이썬을 먼저 배웠다면 좋지 않았을까를 생각해 보았다

처음 html을 배우면서 css와 자바스크립트의 상호 작용을 알고

리엑트와 노드 제이에스를 공부하며 자바스크립트의 유용성을 배우고

데이터 배이스를 배우면서 상호 작용을 알고 왜 나누어 사용하는지 까지 공부한 후

이 파이썬을 시작하니 너무 쉽고 재밌게 느껴진다 그동안 공부 해온 것들을 되새기며 왜 이리도 많이 언어를 나누고 개발했을까 하는 생각이 들었다 아직까진 수박 것 핡기 라는걸 또 한 번 느끼는 한 주였다