(Python 4-2๊ฐ•) Module and Project

210804

ํŒŒ์ด์ฌ์€ ๋Œ€๋ถ€๋ถ„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ด๋ฏธ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์— ์˜ํ•ด ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค!

๋ชจ๋“ˆ

  • ์–ด๋–ค ๋Œ€์ƒ์˜ ๋ถ€๋ถ„ ํ˜น์€ ์กฐ๊ฐ์„ ๋ชจ๋“ˆ์ด๋ผ๊ณ  ํ•œ๋‹ค

  • ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ์ž‘์€ ํ”„๋กœ๊ทธ๋žจ ์กฐ๊ฐ๋“ค๊ณผ ๋ชจ๋“ˆ๋“ค์„ ๋ชจ์•„์„œ ํ•˜๋‚˜์˜ ํฐ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•œ๋‹ค

  • ์ด๋ฏธ ํŒŒ์ด์ฌ ๋‚ด๋ถ€์—๋„ ๋งŽ์€ ๋ชจ๋“ˆ์ด ์žˆ๋‹ค

    • Built In Module

ํŒจํ‚ค์ง€

  • ๋ชจ๋“ˆ์„ ๋ชจ์•„๋†“์€ ๋‹จ์œ„, ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ

ํŒŒ์ด์ฌ์—์„œ ๋ชจ๋“ˆ์€ py ํŒŒ์ผ์„ ์˜๋ฏธํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  import๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ module์„ ํ˜ธ์ถœํ•œ๋‹ค.

  • import๋ฅผ ํ•  ๋•Œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ™์€ ํด๋”์— ์žˆ์–ด์•ผ ํ•œ๋‹ค.

__pycache__ ๊ฐ€ ๋ญ์•ผ?

ํŒŒ์ด์ฌ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ๋ฏธ๋ฆฌ ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญํ•œ ๊ฒƒ. ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ๋”ฉํ•  ๋•Œ ๋น ๋ฅด๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

๋ชจ๋“ˆ์„ ํ˜ธ์ถœํ•  ๋•Œ๋Š” ๋ฒ”์œ„๋ฅผ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ py ํŒŒ์ผ์„ import ํ•˜๋ฉด py ํŒŒ์ผ์•ˆ์— ๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ ๋‹ค ๋กœ๋”ฉ์ด ๋œ๋‹ค.

  • ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ๋กœ๋”ฉํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค

  • ๋ถˆ๋Ÿฌ์˜ค๋ ค๋Š” ํ•จ์ˆ˜ ๋˜๋Š” ํด๋ž˜์Šค๋ฅผ ๋งค๋ฒˆ ์ž‘์„ฑํ•˜๊ธฐ ํž˜๋“ค๋‹ค.

  • ์‹คํ–‰๋˜๋ฉด ์•ˆ๋˜๋Š” ์ฝ”๋“œ๊นŒ์ง€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค

    • ๊ทธ๋ž˜์„œ if __name__ == __main__ ์„ ์“ฐ๊ณค ํ•œ๋‹ค.

์ด ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด namespace!

  • Alias ์„ค์ •ํ•˜๊ธฐ - ๋ชจ๋“ˆ๋ช…์„ ๋ณ„์นญ์œผ๋กœ ์“ฐ๊ธฐ

import fah_converter as fah
  • ๋ชจ๋“ˆ์—์„œ ํŠน์ • ํ•จ์ˆ˜ ๋˜๋Š” ํด๋ž˜์Šค๋งŒ ํ˜ธ์ถœํ•˜๊ธฐ

from fah_converter import covert_c_to_f
  • ๋ชจ๋“ˆ์—์„œ ๋ชจ๋“  ํ•จ์ˆ˜ ๋˜๋Š” ํด๋ž˜์Šค๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ

from fah_converter import *

Built-in Module

  • random, time, urllib.request ๋“ฑ์ด ์žˆ๋‹ค.

์ˆ˜๋งŽ์€ ํŒŒ์ด์ฌ ๋ชจ๋“ˆ์„ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ• ๊นŒ?

  • ๊ตฌ๊ธ€๋ง

  • ๋ชจ๋“ˆ์„ import ํ•˜๊ณ  ๊ตฌ๊ธ€๋ง ๋˜๋Š” Help

  • ๊ณต์‹ ๋ฌธ์„œ

ํŒจํ‚ค์ง€

ํ•˜๋‚˜์˜ ๋Œ€ํ˜• ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ์ฝ”๋“œ์˜ ๋ฌถ์Œ์ด๋‹ค. ๋‹ค์–‘ํ•œ ๋ชจ๋“ˆ๋“ค์ด ๋ชจ์—ฌ์žˆ๋Š” ํด๋” ๋‹จ์œ„๋กœ ์กด์žฌํ•œ๋‹ค.

__init__, __main__ ๋“ฑ ํ‚ค์›Œ๋“œ ํŒŒ์ผ๋ช…์ด ์‚ฌ์šฉ๋˜๋ฉฐ ๋‹ค์–‘ํ•œ ์˜คํ”ˆ์†Œ์Šค๋“ค์ด ํŒจํ‚ค์ง€๋กœ ๊ด€๋ฆฌ๋œ๋‹ค.

  • 3.3 ๋ฒ„์ „ ์ด์ „์—๋Š” __init__ ํŒŒ์ผ์ด ์žˆ์–ด์•ผ ํŒจํ‚ค์ง€๋กœ ๊ฐ„์ฃผ๋˜์—ˆ๋‹ค.

  • ์ง€๊ธˆ์€ ์—†์–ด๋„ ๋˜์ง€๋งŒ ๋งŽ์ด๋“ค ์“ฐ๋Š” ํŽธ

package namespace

  • package ๋‚ด์—์„œ ๋‹ค๋ฅธ ํด๋”์˜ ๋ชจ๋“ˆ์„ ๋ถ€๋ฅผ ๋•Œ ์ƒ๋Œ€ ์ฐธ์กฐ๋กœ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•

# ์ ˆ๋Œ€์ฐธ์กฐ
from game.graphic.render import render_test()

# . ํ˜„์žฌ๋””๋ ‰ํ† ๋ฆฌ๊ธฐ์ค€
from .render import render_test()

# .. ๋ถ€๋ชจ ๋””๋ ‰ํ† ๋ฆฌ ๊ธฐ์ค€
from ..sound.echo import echo_test()

Python Virtual Environment

virtualenv + pip

  • ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ๊ฐ€์ƒํ™˜๊ฒฝ ๊ด€๋ฆฌ ๋„๊ตฌ

  • ๋ ˆํผ๋Ÿฐ์Šค + ํŒจํ‚ค์ง€ ๊ฐœ์ˆ˜

conda

  • ์‚ฌ์šฉ ๊ฐ€์ƒํ™˜๊ฒฝ๋„๊ตฌ

  • miniconda ๊ธฐ๋ณธ๋„๊ตฌ

  • ์„ค์น˜๊ฐ€ ์šฉ์ดํ•ด์„œ ์œˆ๋„์šฐ์—์„œ ์žฅ์ ์„ ๊ฐ€์ง„๋‹ค

์ฝ˜๋‹ค ๊ฐ€์ƒํ™˜๊ฒฝ

# ๋งŒ๋“ค๊ธฐ
conda create -n my project python=3.8

# ํ˜ธ์ถœ
conda activate my_project

# ํ•ด์ œ
conda deactivate

# ํŒจํ‚ค์ง€ ์„ค์น˜
conda install <ํŒจํ‚ค์ง€๋ช…>

Last updated

Was this helpful?