01_Python

48_모듈 생성

chuuvelop 2025. 1. 15. 00:35
728x90
01. 라이브러리와 프레임워크
  • 라이브러리(library)
    • 정상적인 제어를 하는 모듈
  • 프레임워크(framework)
    • 제어 역전이 발생하는 모듈

 

제어 역전(IoC; Inversion of Control)

 

라이브러리 = 정상적인 제어

  • 라이브러리는 모듈의 기능을 개발자가 직접 호출
from math import sin, cos, tan, floor, ceil
print(sin(1))
print(cos(1))
print(tan(1))
0.8414709848078965
0.5403023058681398
1.5574077246549023

 

print(floor(2.5))
print(ceil(2.5))
2
3

 

프레임워크

  • 직접적으로 무언가를 진행하는 코드는 없음
from flask import Flask

 

##간단한 웹사이트를 만드는 코드
app = Flask(__name__)

@app.route("/")
def hello():
    return "<h1>Hello World!</h1>"

app.run()
 * Serving Flask app '__main__'
 * Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://127.0.0.1:5000
Press CTRL+C to quit
127.0.0.1 - - [14/Jan/2025 14:09:47] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [14/Jan/2025 14:09:47] "GET /favicon.ico HTTP/1.1" 404 -

 

 

  • Flask 모듈이 제공하는 명령어를 실행하면 코드를 직접 실행하지 않아도 Flask 모듈 내부에서 서버를 실행한 뒤 지정한 파일을 읽어들여 적절한 상황에 스스로 실행
    • 모듈이 개발자가 작성한 코드를 실행하는 형태의 모듈을 프레임워크라고 부름
  • 개발자가 모듈의 함수를 호출하는 것이 일반적인 제어
  • 반대로 개발자가 만든 함수를 모듈이 실행하는 것이 제어 역전
  • 제어 역전 여부로 라이브러리와 프레임워크를 구분

 

02. 모듈 만들기
  • 파이썬 파일을 만들고 외부에서 읽어들이게 하면 모듈
    • 모듈을 구조화해서 패키지(거대한 모듈)를 만들 수도 있음

__name__ == "__main__"

 

__name__

  • 파이썬 코드 내부에서는 __name__ 이라는 변수를 사용할 수 있음
  • 프로그래밍 언어에서는 프로그램의 진입점을 엔트리 포인트(entry point) 또는 메인(main)이라고 부름
    • 메인 내부에서의 __name__ 변수의 값은 "__main__"임

 

__name__
'__main__'

 

 

모듈의 __name__

  • 엔트리 포인트가 아니지만 엔트리 포인트 파일 내에서 import 되었기 때문에 모듈 내의 코드가 실행됨
  • 모듈 내부에서 __name__을 출력하면 모듈의 이름을 나타냄

 

__name__ 활용

  • 엔트리 포인트 파일 내부에서 name 이 "main" 이라는 값을 갖는다는 것을 활용해서 현재 파일이 모듈로 실행되고 있는지, 엔트리 포인트로 실행되는지 확인할 수 있음

 

03. 패키지
  • 모듈이 모여서 구조를 이룬 것
  • pip는 python package Index의 줄임말고, 패키지 관리 시스템(Package Management System)

 

패키지 만들기

  • 구성
    • module_package(폴더)
      • test_package(폴더) : 패키지로 사용할 폴더
        • module_a.py
        • module_b.py
      • main.py : 엔트리 포인트로 사용할 파이썬 파일
 

 

__init__.py 파일

  • 패키지를 읽을 때 어떤 처리를 수행해야 하거나 패키지 내부의 모듈들을 한꺼번에 가져오고 싶을 때 패키지 폴더 내부에 __init__.py 파일을 만들어 사용
  • 해당 폴더가 패키지임을 알려주고 패키지와 관련된 초기화 처리를 하는 파일
    • __all__ 이라는 이름의 리스트를 만들면 이 리스트에 지정한 모듈들이 from 패키지 import * 를 할 때 전부 읽어들여짐
728x90

'01_Python' 카테고리의 다른 글

50_요청 모듈  (0) 2025.01.15
49_예외처리  (0) 2025.01.15
47_모듈  (0) 2025.01.14
46_Visual Studio Code설치(VS Code)  (0) 2025.01.13
45_클래스_심화  (0) 2025.01.10