파이썬 - 모듈

안녕하세요, 미래의 파이썬 마법사 여러분! 오늘, 우리는 파이썬 모듈의 세계로 흥미진진한 여정을 떠날 거예요. 프로그래밍에 새로운 사람이라도 걱정하지 마세요; 저는 여러분의 친절한 가이드로서 모든 것을 단계별로 설명해 드릴 거예요. 그럼, 가상의 지팡이(키보드)를 잡고, 함께 빠져들어보죠!

Python - Modules

파이썬 모듈

여러분이 마법의 зам(프로그램)을 지어갈 때, 모든 것을cratch에서부터 만들지 않고, 그냥 맞춰서 사용할 수 있는 사전에 지어진 타워, 벽, 그리고 문을 가지고 있었는가요? 이것이 바로 파이썬에서 모듈이랄 거예요 - 여러분의 프로그램에서 쉽게 사용할 수 있는 사전에 작성된 코드입니다.

파이썬 내장 모듈

파이썬에는 내장 모듈의 보물 상자가 딸려 있습니다. 이는 바로 사용할 수 있는 무료 마법 주문과 같아요. 한 가지를 시도해 보죠!

import random

# 1에서 10 사이의 랜덤 숫자 생성
magic_number = random.randint(1, 10)
print(f"Your magic number is: {magic_number}")

이 예제에서는 random 모듈을 사용하여 랜덤 숫자를 생성하고 있습니다. 마치 숫자로 말썽을 내는 것처럼 보이죠!

파이썬 사용자 정의 모듈

내장 모듈은 좋지만, 가끔 여러분 자신의 마법 주문을 만들어야 할 때가 있습니다. 그럴 때는 사용자 정의 모듈이 매우 유용합니다.

파이썬 모듈 생성

간단한 모듈을 magic_spells.py라는 이름으로 만들어 보죠:

# magic_spells.py

def levitate(object):
return f"{object} is floating in the air!"

def disappear(object):
return f"{object} has vanished into thin air!"

이제 우리는 두 가지 마법 기능이 있는 우리 자신의 모듈을 가지고 있습니다!

import 문

새로 만든 모듈을 사용하려면, 이를 임포트해야 합니다:

import magic_spells

# 우리의 모듈에서 함수를 사용
print(magic_spells.levitate("book"))
print(magic_spells.disappear("rabbit"))

출력:

book is floating in the air!
rabbit has vanished into thin air!

from ... import 문

가끔, 모듈에서 특정 주문만 필요할 때가 있습니다. 그럴 때는 from ... import가 유용합니다:

from magic_spells import levitate

# 이제 magic_spells 접두사 없이 직접 levitate를 사용할 수 있습니다
print(levitate("chair"))

출력:

chair is floating in the air!

from...import * 문

모듈의 모든 주문을 임포트하려면 from...import *를 사용할 수 있습니다:

from magic_spells import *

# 이제 모든 함수를 직접 사용할 수 있습니다
print(levitate("table"))
print(disappear("hat"))

하지만, 주의하세요! 이는 마치 판도라의 상자를 열었을 때와 같아요 - 같은 이름의 기존 함수를 우연히 덮어쓰게 될 수 있습니다.

import ... as 문

가끔 모듈 이름이 길거나 혼란스러울 때, import ... as를 사용하여 별명을 지을 수 있습니다:

import magic_spells as spells

print(spells.levitate("pencil"))

모듈 위치

파이썬은 여러 곳에서 모듈을 찾습니다:

  1. 현재 디렉토리
  2. PYTHONPATH (설정된 경우)
  3. 설치에 따른 기본 디렉토리

PYTHONPATH 변수

PYTHONPATH는 파이썬이 추가 모듈을 어디에서 찾을지 알려주는 마법의 지도와 같습니다. 시스템 환경 변수에 설정할 수 있습니다.

네임스페이스와 스코프

네임스페이스는 여러분의 마법 세계의 다른 영역과 같습니다. 각 모듈은 자신의 네임스페이스를 가지고 있어, 같은 이름의 함수나 변수 간의 충돌을 방지합니다.

모듈 속성

모듈은 특별한 속성을 가집니다. 몇 가지를 탐구해 보죠:

import magic_spells

print(magic_spells.__name__)  # 모듈의 이름 출력
print(magic_spells.__file__)  # 모듈의 파일 경로 출력

name 속성

__name__ 속성은 특별합니다. 스크립트가 직접 실행될 때 __main__이고, 임포트될 때 모듈의 이름이 됩니다.

# magic_spells.py에 추가:
if __name__ == "__main__":
print("This module is being run directly")
else:
print("This module is being imported")

dir() 함수

dir() 함수는 모듈에 정의된 모든 이름을 보여주는 마법의 거울과 같습니다:

import magic_spells

print(dir(magic_spells))

reload() 함수

모듈에 변경을 가하고 파이썬을 다시 시작하지 않고 재로드하려면 reload()를 사용할 수 있습니다:

from importlib import reload
import magic_spells

# magic_spells.py에 변경
reload(magic_spells)

파이썬의 패키지

패키지는 여러 모듈을 포함하는 마법의 책과 같습니다. 이들은 간단히 __init__.py 파일이 있는 디렉토리입니다.

다음은 우리가 배운 임포트 방법을 요약한 표입니다:

방법 문법 예제
기본 임포트 import module_name import magic_spells
From 임포트 from module_name import function_name from magic_spells import levitate
모두 임포트 from module_name import * from magic_spells import *
별명으로 임포트 import module_name as alias import magic_spells as spells

그리고 여기 있습니다, 제자들! 여러분은 파이썬 모듈의 기본을 배웠습니다. 기억하세요, 연습이 완벽을 만듭니다. 다양한 모듈을 실험해 보고, 여러분 자신의 마법의 파이썬 세계를 만들어 보세요. 코딩을 즐겁게!

Credits: Image by storyset