A A
[DL] Preparations for Deep Learning - ์ค€๋น„์‚ฌํ•ญ & Python ๊ธฐ๋ณธ๋ฌธ๋ฒ•

๋”ฅ๋Ÿฌ๋‹์„ ๊ณต๋ถ€ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ํ•„์š”ํ•œ ์ค€๋น„๋ฌผ

    • ๋”ฅ๋Ÿฌ๋‹์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ตœ์†Œํ•œ์œผ๋กœ ํ•„์š”ํ•œ ์ค€๋น„๋ฌผ์ด ์žˆ๋‹ค๋ฉด 3๊ฐ€์ง€๋ฅผ ์ ์–ด๋ณผ์ˆ˜ ์žˆ์„๊ฑฐ ๊ฐ™์•„์š”.

Python 3.X ๋ฒ„์ „, Numpy Library, Matplotlib Library ์ž…๋‹ˆ๋‹ค.

Numpy Library

  • Python ์—์„œ ๊ณผํ•™์  ๊ณ„์‚ฐ & ์ˆ˜์น˜๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. NumPy๋Š” ๊ณ ์„ฑ๋Šฅ์˜ ๋‹ค์ฐจ์› ๋ฐฐ์—ด ๊ฐ์ฒด์™€ ์ด๋ฅผ ๋‹ค๋ฃฐ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์น˜ ๊ณ„์‚ฐ์„ ์œ„ํ•œ ๋งค์šฐ ํšจ๊ณผ์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ์ด๋Š” ๋ฐ์ดํ„ฐ ๋ถ„์„, ๋จธ์‹  ๋Ÿฌ๋‹ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Matplotlib Library

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ฐจํŠธ๋‚˜ ํ”Œ๋กฏ์œผ๋กœ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋ผ์ธ ํ”Œ๋กฏ, ์Šค์บํ„ฐ ํ”Œ๋กฏ, ํžˆ์Šคํ† ๊ทธ๋žจ ๋“ฑ ๋‹ค์–‘ํ•œ ํ”Œ๋กฏ์„ ์ง€์›ํ•˜๋ฉฐ, ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๊ทธ๋ž˜ํ”„๋Š” ํ™”๋ฉด์— ๋ณด์—ฌ์ค„ ์ˆ˜๋„ ์žˆ๊ณ  ์ด๋ฏธ์ง€ ํŒŒ์ผ๋กœ ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Python Install - ํŒŒ์ด์ฌ ์„ค์น˜ํ•˜๊ธฐ

    • Python 3๊ฐ€ ์„ค์น˜๊ฐ€ ๋˜์–ด ์žˆ์ง€ ์•Š์•˜์„๋•Œ์—๋งŒ ์„ค์น˜ ํ•ด์ค๋‹ˆ๋‹ค. ์„ค์น˜๊ฐ€ ์ด๋ฏธ ๋˜์žˆ๋Š” ๋ถ„๋“ค์€ Anaconda๋กœ ์„ค์น˜ ํ•˜๋Š”๋Œ€๋กœ ๋„˜์–ด ๊ฐ€์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
    • ํŒŒ์ด์ฌ ์ตœ์‹  ๋ฒ„์ „์„ ์ธํ„ฐ๋„ท์—์„œ ๋‹ค์šด๋กœ๋“œ ํ•ด์ค๋‹ˆ๋‹ค.
    • https://www.python.org/downloads/
    [Download Python

The official home of the Python Programming Language

www.python.org](https://www.python.org/downloads/)


Anaconda 3 ์„ค์น˜

๋”ฅ๋Ÿฌ๋‹์„ ๊ณต๋ถ€ํ•˜๊ณ  ์‹ค์Šต์„ ํ•ด๋ณด๊ธฐ ์œ„ํ•ด์„œ๋Š” Anaconda๋ผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Anaconda๋Š” ๋ฐ์ดํ„ฐ ๊ณผํ•™๊ณผ ๊ธฐ๊ณ„ ํ•™์Šต์„ ์œ„ํ•œ ํŒŒ์ด์ฌ ๋ฐ R ์–ธ์–ด์˜ ๋ฌด๋ฃŒ ์˜คํ”ˆ์†Œ์Šค ๋ฐฐํฌํŒ์ž…๋‹ˆ๋‹ค. Anaconda๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•˜๋Š” ํŽธ๋ฆฌํ•œ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ถ„์„, ๋จธ์‹ ๋Ÿฌ๋‹, ๋”ฅ๋Ÿฌ๋‹ ๋“ฑ์˜ ์ž‘์—…์„ ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์•„๋ž˜์— ์žˆ๋Š” ๋งํฌ์—์„œ ๋‹ค์šด๋กœ๋“œ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • https://www.anaconda.com/download
  • [Free Download | Anaconda

Anaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine.

www.anaconda.com](https://www.anaconda.com/download)


Python Version ํ™•์ธ

Python์„ ์„ค์น˜ ์™„๋ฃŒ ํ–ˆ๋‹ค๋ฉด Version ํ™•์ธ์„ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. Terminal (cmd)์—์„œ

python --version

์ด๋ ‡๊ฒŒ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, ํ˜„์žฌ ์„ค์น˜๋œ Python์˜ Version์ด ์ด๋ ‡๊ฒŒ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

"Python 3.x.x" ์ด๋ ‡๊ฒŒ ๋œจ๋ฉด, ํŒŒ์ด์ฌ์ด ์ œ๋Œ€๋กœ ์„ค์น˜๋œ ๊ฒƒ์ด๋ผ๊ณ  ํ• ์ˆ˜ ์žˆ์–ด์š”.

$ python --version
Python 3.9.13

Python์˜ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ• ๋ฐ ์—ฐ์‚ฐ

์‚ฐ์ˆ ์—ฐ์‚ฐ

  • Python์˜ ๊ธฐ๋ณธ์ ์ธ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์€ ์ด๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
>> 10 - 2 
8
>> 10 * 8     # " * " ๊ณฑ์…ˆ
80
>> 7 / 5    # " / " ๋‚˜๋ˆ—์…ˆ
1.4
>> 9 ** 2    # " ** " ๊ฑฐ๋“ญ์ œ๊ณฑ
81

๋ณ€์ˆ˜

  • Python์—์„œ๋Š” a,x,y,z๋“ฑ ์•ŒํŒŒ๋ฒณ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ๊ณ„์‚ฐ ๋ฐ ๋‹ค๋ฅธ๊ฐ’์„ ์ž…๋ ฅ ๋ฐ ๋Œ€์ž…ํ•˜์—ฌ ์‚ฌ์šฉํ• ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
>>> x = 7
>>> print(x)    # x์˜ ๊ฐ’์„ ์ถœ๋ ฅ
7
>>> x = 800        # ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋Œ€์ž…
>>> print(x)
800
>>> y = 1.8        # y์˜ ๊ฐ’ ์ •์˜
>>> x * y
12.6
>>> type(x * y) # x * y ๊ฐ’์˜ ์ž๋ฃŒํ˜• ํŒŒ์•…
<class 'float'>

์ž๋ฃŒํ˜•

  • ๋ฐ์ดํ„ฐ์˜ ์„ฑ์งˆ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.
  • ์ •์ˆ˜(int), ์‹ค์ˆ˜(float), ๋ฌธ์ž์—ด(str)๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ์˜ ์„ฑ์งˆ์„ ์•Œ๊ณ  ์‹ถ์œผ๋ฉด Python์—์„œ์˜ type()ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ์˜ ์ž๋ฃŒํ˜•์„ ์•Œ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
>>> type(10.698)
<class 'float'>
>>> type(7)
<class 'int'>
>>> type("seoul station")
<class 'str'>

๋ฆฌ์ŠคํŠธ

  • ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ์˜ type์„ ์šฐ์—ฐํ•˜๊ฒŒ ๋‹ด์„์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
>>> x = [10, 20, 30, 40, 50]    # ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ
>>> print(x)    # ๋ฆฌ์ŠคํŠธ ์ถœ๋ ฅ
[10, 20, 30, 40, 50]
>>> x[0]    # ๋ฆฌ์ŠคํŠธ์˜ ์•ž์— ์ฒซ๋ฒˆ์งธ ์›์†Œ์— ์ ‘๊ทผ (0,1,2,3,4 ์ˆœ์„œ)
10
>>> x[-1]    # ๋ฆฌ์ŠคํŠธ์˜ ๋’ค์— ์ฒซ๋ฒˆ์งธ ์›์†Œ์— ์ ‘๊ทผ (-5,-4,-3,-2,-1 ์ˆœ์„œ)
50
>>> x[1] = 15    # ๋ฆฌ์ŠคํŠธ์˜ ๋‘๋ฒˆ์งธ ์›์†Œ์— ๊ฐ’ ๋Œ€์ž…
>>> print(x)
[10, 15, 30, 40, 50]
  • ์›์†Œ์— ์ ‘๊ทผ์‹œ x[0] ์ด๋ ‡๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. "[ ]" ์•ˆ์— ์žˆ๋Š” ์ˆ˜๋ฅผ ์ธ๋ฑ์Šค๋ผ๊ณ  ํ•˜๋ฉฐ, 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ๋˜ํ•œ ์ธ๋ฑ์Šค๋ฅผ ๋’ค์—์„œ ๋ถ€ํ„ฐ ์ ‘๊ทผ ํ•˜๊ณ  ์‹ถ์œผ๋ฉด -1๋ถ€ํ„ฐ ๋ฆฌ์ŠคํŠธ์˜ ๊ฐœ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ์ˆ˜๋งŒํผ ์ธ๋ฑ์Šค๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์›ํ•˜๋Š” ๊ฐ’์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์Šฌ๋ผ์ด์‹ฑ

  • Python ๋ฆฌ์ŠคํŠธ ์—์„œ๋Š” Slicing์ด๋ผ๋Š” ๊ธฐ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜์—ฌ ์›ํ•˜๋Š” ๋ฒ”์œ„(๋ถ€๋ถ„)๋‚ด์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์–ป์„์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.
>>> print(x)
[10, 15, 30, 40, 50]
>>> x[0:3]    # index์˜ 0~3 ๋ฒ”์œ„ ๋‚ด์˜ ์ˆ˜ ์–ป๊ธฐ (3๋ฒˆ์งธ๋Š” ํฌํ•จX)
[10, 15, 30]
>>> x[2:] # index์˜ 2๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ถœ๋ ฅ
[30, 40, 50]

๋ฆฌ์ŠคํŠธ ์กฐ์ž‘ ๋ฉ”์†Œ๋“œ

  • ๋ฆฌ์ŠคํŠธ๋Š” ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
x = [10, 15, 30, 40, 50]
>>> x.append(60)  # ๋ฆฌ์ŠคํŠธ ๋์— 60๋ฅผ ์ถ”๊ฐ€
[10, 15, 30, 40, 50, 60]
>>> x.insert(0, 5)  # 0๋ฒˆ ์ธ๋ฑ์Šค์— 5์„ ์ถ”๊ฐ€
[5, 10, 15, 30, 40, 50, 60]
>>> x.remove(5)  # 5์„ ์ œ๊ฑฐ
[10, 15, 30, 40, 50, 60]
>>> x.pop()  # ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐ˜ํ™˜
[10, 15, 30, 40, 50]

๋ฆฌ์ŠคํŠธ ๊ธธ์ด ํ™•์ธ & ์ •๋ ฌ

  • len() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด(์›์†Œ์˜ ๊ฐœ์ˆ˜)๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • sort() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ๋ฆฌ์ŠคํŠธ์˜ ์›์†Œ๋ฅผ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
x = [10, 40, 30, 15, 50]
>>> print(len(x))
5
>>> x.sort()
>>> print(x)
[10, 15, 30, 40, 50]

๋”•์…”๋„ˆ๋ฆฌ

  • ํ‚ค(key)์™€ ๊ฐ’(value) ์Œ์„ ์›์†Œ๋กœ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด๊ณ , ์‚ฌ์ „์ฒ˜๋Ÿผ ๋‹จ์–ด์™€ ์˜๋ฏธ๋ฅผ ๊ฐ™์ด ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ค‘๊ด„ํ˜ธ({})๋ฅผ ์ด์šฉํ•˜์—ฌ ์ƒ์„ฑํ•˜๋ฉฐ, ํ‚ค์™€ ๊ฐ’์˜ ์Œ์€ ์ฝœ๋ก (:)์œผ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
>>> bigbread = {'weight' : 60}    # dictionary ์ƒ์„ฑ
>>> bigbread['weight']    # element(์›์†Œ)์— ์ ‘๊ทผ
60
>>> bigbread['ballspeed'] = 110 # new element ์ถ”๊ฐ€
>>> print(me)
{'weight: 60, 'ballspeed': 110}

Bool

  • Python์— Bool์ด๋ผ๋Š” ์ž๋ฃŒํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด Bool ์ž๋ฃŒํ˜•์€ True(์ฐธ) & False(๊ฑฐ์ง“), ๋‘ ๊ฐ’์ค‘ ํ•˜๋‚˜๋ฅผ ์ทจํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  and, or, not ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
>>> hungry = True # ๋ฐฐ๊ณ ํ”„๋‹ค
>>> sleepy = False # ์กธ๋ฆฌ์ง€ ์•Š๋‹ค
>>> type(hungry)
<class 'bool'>
>>> not hungry
False
>>> hungry and sleepy
False
>>> hungry or sleepy
True

IF๋ฌธ

  • ์กฐ๊ฑด์— ๋”ฐ๋ผ์„œ if / else ๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
# ๊ธฐ๋ณธ if๋ฌธ
>>> num = 10
>>> if num > 5:
    print("์ˆซ์ž๋Š” 5๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค")

# if-else ๋ฌธ
>>> if num > 20:
    print("์ˆซ์ž๋Š” 20๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค")
>>> else:
    print("์ˆซ์ž๋Š” 20๋ณด๋‹ค ํฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค")

# if-elif-else ๋ฌธ
>>> if num > 20:
    print("์ˆซ์ž๋Š” 20๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค")
>>> elif num == 20:
    print("์ˆซ์ž๋Š” 20์ž…๋‹ˆ๋‹ค")
>>> else:
    print("์ˆซ์ž๋Š” 20๋ณด๋‹ค ์ž‘์Šต๋‹ˆ๋‹ค")

# ์ค‘์ฒฉ if๋ฌธ
>>> num = 12
>>> if num > 10:
    print("์ˆซ์ž๋Š” 10๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค")
    if num > 20:
        print("๊ทธ๋ฆฌ๊ณ  ์ˆซ์ž๋Š” 20๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค")
    else:
        print("ํ•˜์ง€๋งŒ ์ˆซ์ž๋Š” 20๋ณด๋‹ค ํฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค")

For๋ฌธ

  • ์ •ํ•œ ๋ฒ”์œ„ ๋˜๋Š” ์‹œํ€€์Šค(๋ฆฌ์ŠคํŠธ, ํŠœํ”Œ, ๋ฌธ์ž์—ด ๋“ฑ)๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฐ˜๋ณต (๋ฃจํ”„) ์ฒ˜๋ฆฌ์—๋Š” for๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
# ๋ฒ”์œ„์— ๋Œ€ํ•œ ์ˆœํšŒ
>>> for i in range(5):
        print(i)

# ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•œ ์ˆœํšŒ
>>> fruits = ["apple", "banana", "cherry"]
>>> for fruit in fruits:
           print(fruit)

# ๋ฌธ์ž์—ด์— ๋Œ€ํ•œ ์ˆœํšŒ
>>> for letter in 'Python':
        print(letter)

# ์ค‘์ฒฉ๋œ for๋ฌธ
>>> for i in range(3):
        for j in range(3):
            print(i, j)

 

ํ•จ์ˆ˜

  • ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
# ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฐ˜ํ™˜๊ฐ’์ด ์—†๋Š” ํ•จ์ˆ˜
>>> def say_hello():
        print("์•ˆ๋…•ํ•˜์„ธ์š”")

# ํ•จ์ˆ˜ ํ˜ธ์ถœ
>>> say_hello()
"์•ˆ๋…•ํ•˜์„ธ์š”"


# ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ํ•จ์ˆ˜
>>> def greet(name):
        print(f"์•ˆ๋…•ํ•˜์„ธ์š”, {name}๋‹˜")

# ํ•จ์ˆ˜ ํ˜ธ์ถœ
>>> greet("๋ฏผ์ˆ˜")
"์•ˆ๋…•ํ•˜์„ธ์š”, ๋ฏผ์ˆ˜๋‹˜"

# ๋ฐ˜ํ™˜๊ฐ’์ด ์žˆ๋Š” ํ•จ์ˆ˜
>>> def add_numbers(a, b):
        return a + b

# ํ•จ์ˆ˜ ํ˜ธ์ถœ
>>> result = add_numbers(5, 10)
        print(result)
15


# ๊ธฐ๋ณธ๊ฐ’์ด ์žˆ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜
>>> def power(base, exponent=2):
        return base ** exponent

# ํ•จ์ˆ˜ ํ˜ธ์ถœ
>>> print(power(3))  # ์ถœ๋ ฅ: 9 (3์˜ ์ œ๊ณฑ)
>>> print(power(3, 3))  # ์ถœ๋ ฅ: 27 (3์˜ 3์Šน)

ํด๋ž˜์Šค (Class)

  • Python์—์„œ๋Š” Class๋ผ๋Š” ๊ฒƒ์„ ์ •์˜ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, Class๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํˆด ๋˜๋Š” ์„ค๊ฐœ๋„ ์˜ ๊ฐœ๋…์œผ๋กœ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • ๊ฐœ๋ฐœ์ž(์‚ฌ์šฉ์ž)๊ฐ€ ์ •์˜ํ•˜๋Š”๋Œ€๋กœ ๋”ฐ๋ผ์„œ ๋…์ž์ ์ธ ์ž๋ฃŒํ˜•์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์—ฌ๊ธฐ์„œ ์„ค๋ช…ํ•˜๋Š” ๊ฐ์ฒด๋Š” Class์˜ instance(์†์„ฑ, method(๋ฐฉ๋ฒ•))์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
# ํด๋ž˜์Šค ์ •์˜ ์˜ˆ์‹œ
class Car:
    def __init__(self, color, brand): # ์ƒ์„ฑ์ž
        self.color = color
        self.brand = brand
    
    def drive(self): # Method 1
        print(f"{self.brand} car is driving")
        
    def stop(self): # Method 2
        print(f"{self.brand} car has stopped")

# ๊ฐ์ฒด ์ƒ์„ฑ
my_car = Car("Red", "Hyundai")
your_car = Car("Blue", "KIA")

# ๊ฐ์ฒด์˜ ์ƒํƒœ (์†์„ฑ)
print(my_car.color)  # ์ถœ๋ ฅ: Red

# ๊ฐ์ฒด์˜ ํ–‰๋™ (๋ฉ”์„œ๋“œ)
my_car.drive()  # ์ถœ๋ ฅ: Hyundai car is driving
  • Class๋ฅผ ์ •์˜ํ• ๋•Œ, __init__ ์ด๋ผ๋Š” Method๊ฐ€ ์žˆ๋Š”๋ฐ, ๋ณดํ†ต class๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด ์ดˆ๊ธฐํ™”์šฉ Method๋ฅผ ๋ณดํ†ต ์ƒ์„ฑ์ž๋ผ๊ณ  ํ•˜๊ณ , ๋ณดํ†ต Class์˜ instance๋ฅผ ๋งŒ๋“ค๋•Œ, ํ•œ๋ฒˆ๋งŒ ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ , Python์—์„œ์˜ Method๋กœ ์ฒซ๋ฒˆ์งธ Instance๋กœ ๋‚˜ํƒ€๋‚ด๋ ค๋ฉด self๋กœ ๋ช…์‹œํ•˜๋Š”๊ฒƒ์ด ๋ณดํ†ต์ž…๋‹ˆ๋‹ค.