[Python] 2. 외부 모듈 세부 사항
목차 외부 모듈 설치 방법과 예시 외부 모듈 설치 Beautiful Soup Flask Django Django와 Flask 외부 모듈 세부 사항 라이브러리 프레임워크 제어 역전 함수 데코레이터 라이브러리 라이브러리는 프로젝트에서 가져오고 사용할 수 있는 미리 작성된 코드, 함수, 클래스 및 기타 리소스의 모음입니다. 라이브러리는 개발자에게 재사용 가능한 코드를 제공하여 일반적인 작업과 기능을 위해 바퀴를 재발명하지 않아도 되므로 시간과 노력을 절약할 수 있습니다. 라이브러리는 두 가지 주요 유형으로 분류할 수 있습니다. 표준 라이브러리 기본적으로 프로그래밍 언어와 함께 제공되는 라이브러리입니다. 예를 들어 Python의 표준 라이브러리에는 파일 처리(os, shutil), 정규식(re), 수학 함수(m..
2023.05.06
[Python] 1. 외부 모듈 설치 방법과 예시
목차 외부 모듈 설치 방법과 예시 외부 모듈 설치 Beautiful Soup Flask Django Django와 Flask 외부 모듈 세부 사항 라이브러리 프레임워크 제어 역전 함수 데코레이터 외부 모듈 설치 파이썬에서 외부 모듈을 설치하려면 일반적으로 파이썬 패키지 설치 관리자(pip)를 사용합니다. pip를 사용하여 외부 모듈을 설치하는 방법은 다음과 같습니다. 1. 명령 프롬프트(Windows) 또는 터미널(macOS 및 Linux)을 엽니다. 2. 다음 명령어를 입력하고 Enter 키를 누릅니다. pip install module_name 3. "module_name"을 설치하려는 외부 모듈의 이름으로 바꿉니다. 예를 들어, 인기있는 "requests" 모듈을 설치하려면 명령은 다음과 같습니다...
2023.05.06
[Python] 다양한 내부 모듈의 종류와 활용 PART.2
목차 PART1 math 모듈 math 함수에 from, as 구문 함께 사용하기 random 모듈 sys 모듈 os 모듈 PART2 datetime 모듈 time 모듈 urllib 모듈 urlopen 함수 operator.itemgetter 함수 datetime 모듈 Python의 날짜/시간 모듈은 날짜와 시간 작업에 사용됩니다. 날짜, 시간 및 간격을 조작하기 위한 클래스를 제공합니다. 다음은 날짜/시간 모듈에 대한 개요입니다: 1. 날짜/시간 모듈을 가져옵니다. 날짜/시간 모듈을 사용하려면 먼저 모듈을 임포트해야 합니다: import datetime 2. 날짜/시간 모듈의 일반적인 용도 1) 현재 날짜와 시간 가져오기 datetime.datetime.now() 함수를 사용하여 현재 날짜와 시간을 가..
2023.05.05
[Python] 다양한 내부 모듈의 종류와 활용 PART.1
목차 PART1 math 모듈 math 함수에 from, as 구문 함께 사용하기 random 모듈 sys 모듈 os 모듈 PART2 datetime 모듈 time 모듈 urllib 모듈 urlopen 함수 operator.itemgetter 함수 math 모듈 파이썬의 math 모듈은 다양한 math 함수와 상수를 제공하므로 코드에서 math 연산을 더 쉽게 수행할 수 있습니다. 다음은 math 모듈을 사용하는 몇 가지 방법과 예제입니다: 1. 모듈을 가져옵니다. math 모듈을 사용하려면 먼저 모듈을 임포트해야 합니다. import math 2. math 함수 math 모듈은 sqrt, sin, cos, tan, log, ceiling, floor 등과 같은 여러 math 함수를 제공합니다. # 숫자..
2023.05.05
[Python] 모듈이란?
목차 모듈이란 표준 모듈과 외부 모듈 모듈을 읽어오는 방법 모듈이란 Python의 모듈은 일반적으로 확장자가 .py인 Python 코드를 포함하는 파일로, 다른 Python 스크립트나 프로그램에서 가져와서 사용할 수 있습니다. 모듈은 코드를 더 쉽게 공유하고 유지 관리할 수 있는 더 작은 독립된 단위로 분리하여 정리하고 재사용하는 데 사용됩니다. 모듈에는 실행 코드뿐만 아니라 함수, 클래스, 변수도 포함될 수 있습니다. 모듈을 가져오면 Python은 모듈 내부의 코드를 실행하고 그 내용을 가져오기 스크립트에서 사용할 수 있도록 합니다. 모듈을 사용하려면 모듈 이름(.py 확장자 없이) 뒤에 import 문을 사용하여 모듈을 가져와야 합니다. 예를 들면 다음과 같습니다. import my_module 모듈..
2023.05.04
[Python] 파이썬에서 말하는 예외란?
목차 예외란 예외 객체 예외를 구분하는 방법 예외를 처리하는 과정과 프로그램이 갑자기 종료되는 이유 raise 키워드 예외란 파이썬에서 예외는 프로그램 실행 중에 오류나 비정상적인 조건이 발생했을 때 발생하는 이벤트입니다. 예외는 프로그램이 정상적으로 처리하거나 진행할 수 없는 상황이 발생했을 때 발생합니다. 예외는 일반적으로 코드의 오류 또는 0으로 나누기, 목록에 존재하지 않는 요소 액세스, 존재하지 않는 파일 열기 시도와 같은 예기치 않은 상황에 의해 트리거됩니다. 예외가 발생하면 프로그램의 정상적인 흐름이 중단되고 프로그램은 예외 처리기라는 특수 코드 블록으로 이동합니다. Python에서 예외는 기본 클래스 BaseException에서 파생된 클래스의 인스턴스인 객체입니다. Python 표준 라이..
2023.05.03
반응형

목차

  • 외부 모듈 설치 방법과 예시
    1. 외부 모듈 설치
    2. Beautiful Soup
    3. Flask
    4. Django
    5. Django와 Flask
  • 외부 모듈 세부 사항
    1. 라이브러리
    2. 프레임워크
    3. 제어 역전
    4. 함수 데코레이터

라이브러리

라이브러리는 프로젝트에서 가져오고 사용할 수 있는 미리 작성된 코드, 함수, 클래스 및 기타 리소스의 모음입니다. 라이브러리는 개발자에게 재사용 가능한 코드를 제공하여 일반적인 작업과 기능을 위해 바퀴를 재발명하지 않아도 되므로 시간과 노력을 절약할 수 있습니다.

라이브러리는 두 가지 주요 유형으로 분류할 수 있습니다.

  • 표준 라이브러리
    기본적으로 프로그래밍 언어와 함께 제공되는 라이브러리입니다. 예를 들어 Python의 표준 라이브러리에는 파일 처리(os, shutil), 정규식(re), 수학 함수(math) 등을 위한 모듈이 포함되어 있습니다. 이러한 라이브러리는 프로그래밍 언어를 설치할 때 즉시 사용할 수 있으므로 별도로 설치할 필요가 없습니다.

  • 외부 라이브러리
    타사에서 개발한 라이브러리이며 기본적으로 프로그래밍 언어에 포함되어 있지 않습니다. 개발자는 일반적으로 Python용 pip, JavaScript용 npm 또는 Ruby용 gem과 같은 패키지 관리자를 사용하여 외부 라이브러리를 별도로 설치해야 합니다. 외부 라이브러리의 예로는 수치 컴퓨팅을 위한 NumPy, 웹 개발을 위한 Flask, Python의 기계 학습을 위한 TensorFlow가 있습니다.

코드에서 라이브러리를 사용하려면 일반적으로 import 문을 사용하여 라이브러리를 가져와야 합니다. 예를 들어 파이썬에서는 다음과 같습니다.

import os

 

이렇게 하면 Python의 표준 라이브러리에서 os 모듈을 가져와 함수와 클래스에 액세스할 수 있습니다.

라이브러리는 개발자에게 사전 구축된 솔루션과 모범 사례를 제공하여 효율적이고 유지 관리 가능하며 확장 가능한 코드를 쉽게 작성할 수 있도록 함으로써 소프트웨어 개발에서 중요한 역할을 합니다. 또한 개발자가 기존 라이브러리를 기반으로 새로운 기능을 생성할 수 있으므로 코드 재사용성과 모듈성을 촉진합니다.


프레임워크

프레임워크(framework)는 소프트웨어 개발에 필요한 기본 구조와 코드를 제공하는 템플릿입니다. 프레임워크는 개발자가 일반적인 프로그래밍 문제를 효과적으로 해결하고, 빠르게 신뢰할 수 있는 소프트웨어를 개발하는 데 도움이 됩니다.

프레임워크의 주요 목적은 다음과 같습니다.

  • 코드 재사용성
    프레임워크는 공통적인 기능 및 구조를 제공함으로써 개발자들이 중복 코드를 최소화하고 공통 작업을 재사용할 수 있게 돕습니다.

  • 개발 속도 향상
    프레임워크를 사용하면 개발자가 효과적인 구조와 기본 기능을 갖춘 애플리케이션을 빠르게 구축할 수 있습니다.

  • 유지 관리와 확장성
    프레임워크는 일관된 구조와 디자인 패턴을 제공하여 소프트웨어를 쉽게 유지 관리하고 확장할 수 있는 기반을 제공합니다.

프레임워크는 다양한 프로그래밍 언어와 사용 사례에 적용할 수 있습니다. 웹 개발, 모바일 애플리케이션, 데이터베이스 관리, 기계 학습 등 다양한 분야에서 프레임워크가 활용되고 있습니다.

프레임워크의 예시는 다음과 같습니다.

  • 웹 개발
    • Python: Django, Flask
    • JavaScript: Angular, React, Vue.js
    • Ruby: Ruby on Rails
    • PHP: Laravel, Symfony
  • 모바일 애플리케이션 개발
    • iOS: Swift, Objective-C
    • Android: Java, Kotlin
  • 기계 학습 및 데이터 분석
    • Python: TensorFlow, PyTorch, Scikit-learn, Pandas

프레임워크를 사용하면 개발자는 표준화된 방식으로 문제를 해결할 수 있으며, 쉽게 이해할 수 있는 코드와 효율적인 개발 프로세스를 구현할 수 있습니다. 프레임워크는 개발자가 새로운 기능 및 기술을 쉽게 통합하고, 소프트웨어의 안정성 및 성능을 높일 수 있도록 지원합니다.


제어 역전

제어 역전(Inversion of Control, IoC)은 소프트웨어 개발에서 객체 지향 디자인 원칙 중 하나로, 컴포넌트 간의 제어 흐름과 종속성을 역전시키는 것을 의미합니다. 일반적으로, 프로그램의 제어 흐름은 메인 함수나 전역 프로시저가 결정합니다. 제어 역전은 이러한 메인 함수나 전역 프로시저의 역할을 프레임워크나 라이브러리로 이동시켜, 프레임워크가 개발자가 작성한 컴포넌트의 실행 순서와 타이밍을 결정합니다.

제어 역전의 주요 목적은 다음과 같습니다.

  • 모듈 간의 결합도를 낮추기
    제어 역전을 사용하면 의존성이 라이브러리나 프레임워크에 위임되므로, 개별 모듈 간의 결합도를 낮출 수 있습니다.

  • 코드의 재사용성 향상
    제어 역전을 사용하면 공통 기능을 분리하고 중앙에서 관리할 수 있어, 코드 재사용성이 향상됩니다.

  • 유지 보수성 개선
    모듈 간 결합도가 낮아지면 유지 보수성이 향상되며, 개발자는 개별 모듈에 집중할 수 있습니다.

제어 역전은 종종 의존성 주입(Dependency Injection, DI)과 혼동되곤 합니다. 의존성 주입은 제어 역전을 구현하는 한 가지 방법으로, 컴포넌트 간의 의존성을 외부에서 주입해주는 기술입니다. 의존성 주입을 통해 개별 컴포넌트가 직접 의존성을 생성하거나 찾는 대신 외부에서 의존성을 주입받으므로, 결합도를 낮추고 유연성과 테스트 용이성을 높일 수 있습니다. 


함수 데코레이터

함수 데코레이터는 Python의 고급 기능 중 하나로, 함수의 기능을 수정하거나 확장할 때 사용됩니다. 데코레이터는 다른 함수를 인자로 받는 callable 객체(일반적으로 함수)입니다. 이 callable 객체는 원래 함수를 감싸고 추가 기능을 제공하거나 기존 기능을 수정하는 역할을 합니다.

데코레이터는 다음과 같은 구문으로 사용됩니다.

@decorator
def function_to_decorate():
    pass


이 구문은 다음 코드와 동일한 작업을 수행합니다:

function_to_decorate = decorator(function_to_decorate)


데코레이터를 사용하는 이유는 다양하며, 일반적으로 다음과 같은 경우에 사용됩니다.

  • 코드 재사용: 데코레이터를 사용하면 공통 기능을 여러 함수에서 쉽게 재사용할 수 있습니다.
  • 코드 분리: 데코레이터를 사용하면 함수의 주요 기능과 추가 기능을 분리하여 코드를 더 쉽게 이해하고 유지 관리할 수 있습니다.
  • 기능 추가: 기존 함수를 수정하지 않고도 새로운 기능을 추가할 수 있습니다.

데코레이터 예시

def simple_decorator(func):
    def wrapper():
        print("Something is happening before the function is called.")
        func()
        print("Something is happening after the function is called.")
    return wrapper

@simple_decorator
def say_hello():
    print("Hello!")

say_hello()


이 코드의 출력 결과는 다음과 같습니다:

Something is happening before the function is called.
Hello!
Something is happening after the function is called.


이 예시에서 simple_decorator는 데코레이터 함수이며, say_hello 함수를 인자로 받아 wrapper 함수를 반환합니다. wrapper 함수는 원래 함수인 say_hello가 호출되기 전후에 추가적인 작업을 수행합니다. 데코레이터를 사용하면 기존 함수의 기능을 수정하거나 확장할 수 있으며, 코드 재사용성과 유지 관리성을 높일 수 있습니다.


 

반응형
반응형

목차

  • 외부 모듈 설치 방법과 예시
    1. 외부 모듈 설치
    2. Beautiful Soup
    3. Flask
    4. Django
    5. Django와 Flask
  • 외부 모듈 세부 사항
    1. 라이브러리
    2. 프레임워크
    3. 제어 역전
    4. 함수 데코레이터

외부 모듈 설치

파이썬에서 외부 모듈을 설치하려면 일반적으로 파이썬 패키지 설치 관리자(pip)를 사용합니다. pip를 사용하여 외부 모듈을 설치하는 방법은 다음과 같습니다.

1. 명령 프롬프트(Windows) 또는 터미널(macOS 및 Linux)을 엽니다.


2. 다음 명령어를 입력하고 Enter 키를 누릅니다.

pip install module_name


3. "module_name"을 설치하려는 외부 모듈의 이름으로 바꿉니다. 예를 들어, 인기있는 "requests" 모듈을 설치하려면 명령은 다음과 같습니다.

pip install requests


4. 설치 과정이 완료될 때까지 기다립니다. 모듈이 설치되면 파이썬 스크립트에서 가져와서 사용할 수 있습니다.


Beautiful Soup

Beautiful Soup은 HTML 및 XML 문서에서 데이터를 추출하기 위해 웹 스크래핑 목적으로 사용되는 Python 라이브러리입니다. HTML 및 XML 파일에서 구문 분석 트리를 생성하여 데이터를 쉽게 추출하는 데 사용할 수 있습니다. Beautiful Soup은 구문 분석 트리를 탐색, 검색 및 수정하기 위한 몇 가지 간단한 메서드와 Python 관용구를 제공합니다.

Beautiful Soup을 사용하려면 먼저 설치해야 합니다.

pip install beautifulsoup4


Beautiful Soup을 설치한 후 라이브러리를 가져오고 HTML 콘텐츠를 가져오기 위해 requests와 같은 HTTP 라이브러리와 결합하여 Python 스크립트에서 사용할 수 있습니다.

import requests
from bs4 import BeautifulSoup

url = "https://example.com"
response = requests.get(url)

soup = BeautifulSoup(response.text, "html.parser")


이제 BeautifulSoup 개체를 만들었으므로 라이브러리에서 제공하는 다양한 메서드를 사용하여 HTML 콘텐츠에서 특정 요소에 액세스하고 추출할 수 있습니다. 몇 가지 일반적인 방법은 다음과 같습니다.

  • find(): 주어진 속성과 일치하는 태그의 첫 번째 항목을 검색합니다.
  • find_all(): 주어진 속성과 일치하는 태그의 모든 항목을 검색합니다.
  • select(): 주어진 CSS 선택자와 일치하는 태그를 검색합니다.
  • get_text(): 태그에서 텍스트 콘텐츠를 추출합니다.

다음은 웹페이지에서 모든 링크를 추출하는 간단한 예입니다.

import requests
from bs4 import BeautifulSoup

url = "https://example.com"
response = requests.get(url)

soup = BeautifulSoup(response.text, "html.parser")

# Find all 'a' tags
links = soup.find_all('a')

# Extract and print the 'href' attribute of each link
for link in links:
    print(link.get('href'))


Beautiful Soup은 사용하기 쉽고 잘못된 마크업을 우아하게 처리할 수 있기 때문에 웹 스크래핑 작업에 널리 사용됩니다.


Flask

Flask는 웹 애플리케이션을 쉽게 만들 수 있는 가볍고 유연한 Python 웹 프레임워크입니다. Flask는 도구, 라이브러리 및 간단한 API를 제공하여 최소한의 설정 및 상용구 코드로 웹 애플리케이션을 만드는 데 도움을 줍니다. 마이크로 프레임워크로 간주되며, 이는 작고 집중적이며 외부 라이브러리 및 플러그인으로 쉽게 확장할 수 있음을 의미합니다.

1. Flask의 일부 주요 기능은 다음과 같습니다.

  • 라우팅
    Flask를 사용하면 들어오는 요청을 처리하고 응답을 생성하는 Python 함수에 URL을 매핑하여 웹 애플리케이션에 대한 경로를 간단하게 정의할 수 있습니다.

  • 템플릿
    Flask는 간단한 템플릿 구문을 사용하여 동적 HTML 페이지를 생성할 수 있는 Jinja2 템플릿 엔진을 사용합니다.

  • 양식 및 입력 처리
    Flask는 제출된 데이터의 유효성 검사 및 처리를 포함하여 웹 양식에서 사용자 입력을 처리하기 위한 기본 제공 지원을 제공합니다.

  • 세션 및 쿠키
    Flask를 사용하면 세션 변수 및 쿠키를 사용하여 사용자별 데이터를 저장하고 관리할 수 있습니다.

  • 확장 및 플러그인
    Flask에는 데이터베이스 통합, 사용자 인증 등과 같은 기능을 웹 애플리케이션에 추가하는 데 사용할 수 있는 확장 및 플러그인의 풍부한 생태계가 있습니다.

2. Flask를 시작하려면 먼저 Flask를 설치해야 합니다.

pip install Flask


3. 설치 후 위의 예제 코드로 새 Python 파일을 만들고 실행하여 Flask 웹 애플리케이션을 시작할 수 있습니다. 다음은 Flask 웹 애플리케이션의 간단한 예입니다.

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run(debug=True)


이 코드는 루트 URL("/")에 매핑되는 단일 경로가 있는 기본 Flask 웹 애플리케이션을 만듭니다. 사용자가 이 URL을 방문하면 hello 함수가 호출되어 "Hello, World!" 메시지. app.run(debug=True) 라인은 디버그 모드가 활성화된 상태로 개발 서버를 시작하여 문제가 발생할 경우 자세한 오류 메시지를 볼 수 있습니다.


Django

Django는 빠른 개발과 깨끗하고 실용적인 디자인을 장려하는 높은 수준의 오픈 소스 Python 웹 프레임워크입니다. MVT(Model-View-Template) 아키텍처 패턴을 따르며 개발자가 확장 가능하고 유지 관리 가능한 웹 애플리케이션을 구축하는 데 도움을 주는 것을 목표로 합니다. Django는 강력하고 내장된 기능으로 유명하므로 복잡한 데이터 기반 웹 애플리케이션을 만드는 데 탁월한 선택입니다.

1. Django의 몇 가지 주요 기능은 다음과 같습니다.

  • 관리 인터페이스
    Django는 애플리케이션 데이터 관리를 위한 기본 제공 관리 인터페이스를 제공하므로 모델에서 CRUD(만들기, 읽기, 업데이트, 삭제) 작업을 쉽게 수행할 수 있습니다.

  • URL 라우팅
    Django를 사용하면 웹 애플리케이션의 URL 패턴을 정의하고 해당 보기에 매핑할 수 있습니다.

  • ORM(Object-Relational Mapping)
    Django의 ORM을 사용하면 원시 SQL 쿼리를 작성하는 대신 Python 클래스 및 객체를 사용하여 데이터베이스와 상호 작용할 수 있습니다. PostgreSQL, MySQL, SQLite 및 Oracle을 포함한 다양한 데이터베이스 시스템을 지원합니다.

  • 양식 및 입력 처리
    Django는 사용자 입력, 유효성 검사 및 HTML 양식 렌더링을 단순화하는 강력한 양식 시스템을 제공합니다.

  • 템플릿
    Django는 자체 템플릿 엔진을 사용하여 동적 HTML 페이지를 생성합니다. 템플릿 구문은 배우기 쉽고 유연하여 재사용 가능한 템플릿과 구성 요소를 만들 수 있습니다.

  • 인증 및 권한 부여
    Django에는 사용자 인증 및 권한 부여 지원 기능이 내장되어 있어 애플리케이션에서 사용자 계정, 권한 및 액세스 제어를 쉽게 관리할 수 있습니다.

  • 미들웨어
    Django의 미들웨어 시스템을 사용하면 요청과 응답이 보기에 도달하기 전이나 보기를 떠난 후에 전역적으로 처리할 수 있으므로 보안, 세션 관리 및 캐싱과 같은 측면을 처리할 수 있습니다.

  • 확장성
    Django에는 타사 앱과 플러그인의 풍부한 생태계가 있어 애플리케이션의 기능을 쉽게 확장할 수 있습니다.

2. Django를 시작하려면 먼저 Django를 설치해야 합니다.

pip install Django

 

일단 설치되면 Django의 명령줄 도구를 사용하여 새 프로젝트를 만들고 웹 애플리케이션 구축을 시작할 수 있습니다.


Django와 Flask

Django와 Flask는 둘 다 널리 사용되는 Python 웹 프레임워크이지만 서로 다른 디자인 철학을 가지고 있으며 서로 다른 요구 사항을 충족합니다. 기능을 비교하면 다음과 같습니다.

1. 디자인 철학
Django는 "batteries-included" 접근 방식을 따르며 일반적인 작업을 위한 내장 기능 및 도구가 포함된 전체 스택 솔루션을 제공합니다. MVT(Model-View-Template) 아키텍처 패턴을 준수합니다.

반면 Flask는 단순성과 유연성을 강조하는 마이크로 프레임워크입니다. 구성 요소를 선택하고 원하는 방식으로 애플리케이션을 빌드할 수 있습니다. Flask는 WSGI(Web Server Gateway Interface) 표준을 따릅니다.

2. 학습 곡선
Django는 광범위한 기능과 구성 요소로 인해 초보자가 배우기에 더 어려울 수 있습니다. 그러나 규칙에 익숙해지면 개발 프로세스 속도를 높일 수 있습니다.

Flask는 최소한의 접근 방식을 사용하고 따라야 할 규칙이 적기 때문에 특히 웹 개발을 처음 접하는 사람들이 배우기 쉽습니다.

3. 유연성
Django는 독단적이며 응용 프로그램을 구성하고 구축하는 특정 방법을 권장합니다. 이것은 일관성을 유지하고 모범 사례를 따르는 데 도움이 될 수 있지만 일부 개발자에게는 제한적으로 느껴질 수 있습니다.

Flask는 구성 요소를 선택하고 응용 프로그램을 구성하는 데 더 많은 자유를 제공합니다. 이러한 유연성은 처음부터 응용 프로그램을 구축하는 것을 선호하는 숙련된 개발자에게 매력적일 수 있습니다.

4. 내장 기능
Django는 관리 인터페이스, ORM, 인증 및 양식 처리와 같은 강력한 내장 기능 세트와 함께 제공됩니다.

마이크로 프레임워크인 Flask는 기본 제공 기능이 적습니다. 그러나 타사 확장 및 라이브러리를 사용하여 기능을 확장할 수 있습니다.

5. 확장성
Django와 Flask 모두 확장 가능한 애플리케이션을 구축하는 데 사용할 수 있지만 접근 방식이 다릅니다. Django의 내장 기

능을 사용하면 복잡한 기능을 가진 대규모 애플리케이션을 더 쉽게 구축할 수 있습니다.

Flask의 모듈 방식을 사용하면 필요에 따라 개별 구성 요소를 최적화하고 확장할 수 있으므로 애플리케이션 성능을 더 잘 제어할 수 있습니다.

6. 커뮤니티 및 생태계
Django와 Flask 모두 대규모의 활동적인 커뮤니티와 풍부한 타사 패키지 및 플러그인을 사용할 수 있습니다. Django는 더 오래되었고 더 광범위한 생태계를 가지고 있지만 Flask는 인기가 빠르게 증가하고 있으며 확장 범위도 넓습니다.

Django와 Flask 중에서 선택하는 것은 프로젝트 요구 사항, 개발 경험 및 개인 선호도에 따라 다릅니다. 개발 속도를 높이는 완전한 기능을 갖춘 독창적인 프레임워크가 필요한 경우 Django가 더 탁월한 선택입니다. 처음부터 응용 프로그램을 빌드할 수 있는 가볍고 유연한 프레임워크를 선호한다면 Flask가 더 훌륭한 옵션입니다.


반응형
반응형

목차

  • PART1
    1. math 모듈
    2. math 함수에 from, as 구문 함께 사용하기
    3. random 모듈
    4. sys 모듈
    5. os 모듈
  • PART2
    1. datetime 모듈
    2. time 모듈
    3. urllib 모듈
    4. urlopen 함수
    5. operator.itemgetter 함수

datetime 모듈

Python의 날짜/시간 모듈은 날짜와 시간 작업에 사용됩니다. 날짜, 시간 및 간격을 조작하기 위한 클래스를 제공합니다. 다음은 날짜/시간 모듈에 대한 개요입니다:

1. 날짜/시간 모듈을 가져옵니다.
날짜/시간 모듈을 사용하려면 먼저 모듈을 임포트해야 합니다:

import datetime


2. 날짜/시간 모듈의 일반적인 용도


  1) 현재 날짜와 시간 가져오기

datetime.datetime.now() 함수를 사용하여 현재 날짜와 시간을 가져올 수 있습니다.

import datetime

# 현재 날짜 및 시간 가져오기
current_datetime = datetime.datetime.now()
print(current_datetime)


  2) 사용자 정의 날짜 생성

datetime.date 클래스를 사용하여 사용자 정의 날짜를 만들 수 있습니다.

import datetime

# 사용자 정의 날짜 만들기
custom_date = datetime.date(2023, 5, 2)
print(custom_date)


  3) 사용자 정의 시간 생성

datetime.time 클래스를 사용하여 사용자 정의 시간을 만들 수 있습니다.

import datetime

# 사용자 정의 시간 만들기
custom_time = datetime.time(12, 30, 45)
print(custom_time)


  4) 사용자 정의 날짜/시간 생성

datetime.datetime 클래스를 사용하여 사용자 정의 날짜/시간을 만들 수 있습니다.

import datetime

# 사용자 정의 날짜 시간 만들기
custom_datetime = datetime.datetime(2023, 5, 2, 12, 30, 45)
print(custom_datetime)


  5) 날짜와 시간으로 산술 수행

datetime.timedelta 클래스를 사용하여 날짜 및 시간으로 산술을 수행할 수 있습니다.

import datetime

# 현재 날짜 및 시간 가져오기
current_datetime = datetime.datetime.now()

# 현재 날짜와 시간에 하루를 추가합니다.
one_day = datetime.timedelta(days=1)
tomorrow = current_datetime + one_day
print(tomorrow)

# 현재 날짜와 시간에서 하루를 뺍니다.
yesterday = current_datetime - one_day
print(yesterday)


  6) 날짜와 시간 서식을 지정합니다:

strftime() 메서드를 사용하여 날짜와 시간을 문자열로 서식을 지정할 수 있습니다.

import datetime

# 현재 날짜 및 시간 가져오기
current_datetime = datetime.datetime.now()

# 날짜와 시간을 문자열로 포맷
formatted_datetime = current_datetime.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_datetime)

time 모듈

파이썬의 시간 모듈은 시간 관련 함수로 작업하는 데 사용됩니다. 현재 시간 가져오기, 코드 실행 지연, 시간 서식 지정 등 시간 관련 작업을 위한 다양한 함수를 제공합니다.

1. 시간 모듈을 가져옵니다.
시간 모듈을 사용하려면 먼저 시간 모듈을 가져와야 합니다.

import time


2. 시간 모듈의 일반적인 용도


  1) 현재 시간을 가져옵니다.

time.time() 함수를 사용하여 에포크(1970년 1월 1일, 00:00:00 UTC) 이후의 현재 시간(초)을 가져올 수 있습니다.

import time

# 에포크 이후 현재 시간(초)을 가져옵니다.
current_time = time.time()
print(current_time)


  2) 코드 실행 지연

time.sleep() 함수를 사용하여 지정된 시간(초) 동안 코드 실행을 일시 중지할 수 있습니다.

import time

# 5초 동안 코드 실행을 지연합니다.
print("Start")
time.sleep(5)
print("End")


  3) 다른 시간 표현 사이를 변환

시간 모듈은 time.gmtime(), time.localtime(), time.mktime()과 같이 서로 다른 시간 표현을 변환하는 함수를 제공합니다.

import time

# 에포크 이후 초를 UTC의 구조시간으로 변환합니다.
utc_time = time.gmtime()
print(utc_time)

# 에포크 이후 초를 현지 시간대의 struct_time으로 변환합니다.
local_time = time.localtime()
print(local_time)

# 구조 시간을 에포크 이후 초로 변환합니다.
seconds_since_epoch = time.mktime(local_time)
print(seconds_since_epoch)


  4) 시간 포맷

time.strftime() 함수를 사용하여 시간을 문자열로 포맷할 수 있습니다.

import time

# 현지 시간대의 현재 시간을 가져옵니다.
local_time = time.localtime()

# 시간을 문자열로 포맷
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
print(formatted_time)


  5) 시간을 구문 분석

time.strptime() 함수를 사용하여 시간 문자열을 struct_time으로 구문 분석할 수 있습니다.

import time

# 시간 문자열을 구조체_시간으로 파싱합니다.
time_string = "2023-05-02 12:30:45"
time_format = "%Y-%m-%d %H:%M:%S"
parsed_time = time.strptime(time_string, time_format)
print(parsed_time)

urllib 모듈

Python의 urllib 모듈은 URL 작업을 위한 모듈 모음을 제공하는 패키지입니다. URL을 열고, 읽고, 구문 분석할 뿐만 아니라 HTTP 요청을 전송하고 웹 서비스와 상호 작용하는 데 도움이 됩니다. urllib 패키지에는 urllib.request, urllib.parse, urllib.error 및 urllib.robotparser를 비롯한 여러 모듈이 포함되어 있습니다.

다음은 urllib 패키지와 그 모듈에 대한 사용 방법입니다.

1. urllib.request
이 모듈은 URL을 열고 읽는 함수를 제공합니다. HTTP, HTTPS, FTP 등과 같은 다양한 프로토콜을 처리할 수 있습니다. 다음은 urllib.request를 사용하여 URL을 열고 그 내용을 읽는 예제입니다:

import urllib.request

# URL을 열고 콘텐츠를 읽습니다.
url = "https://www.example.com"
response = urllib.request.urlopen(url)
content = response.read()

print(content)

 

2. urllib.parse
이 모듈은 URL을 구성 요소로 분할하고, URL 매개변수를 인코딩 및 디코딩하고, URL 구성 요소를 결합하는 등 URL을 조작하고 파싱하는 함수를 제공합니다. 다음은 urllib.parse를 사용하여 URL을 구성 요소로 분할하는 예제입니다:

import urllib.parse

# URL을 구성 요소로 분할
url = " https://www.example.com/path?query=param "
parsed_url = urllib.parse.urlsplit(url)

print(parsed_url)


3. urllib.error
이 모듈은 URLError 및 HTTPError와 같이 URL 처리 중에 발생할 수 있는 에러를 처리하기 위한 예외 클래스를 제공합니다. 이러한 예외를 사용하면 urllib.request 모듈로 작업할 때 오류를 정상적으로 처리할 수 있습니다. 다음은 urllib.error를 사용하여 예외를 처리하는 예제입니다:

import urllib.request
import urllib.error

url = "https://www.nonexistentwebsite.com"

try:
    response = urllib.request.urlopen(url)
urllib.error.URLError를 e로 제외합니다:
    print(f"오류가 발생했습니다: {e}")


4. urllib.robotparser
이 모듈은 웹사이트의 robots.txt 파일을 파싱하고 분석하는 데 사용할 수 있는 RobotFileParser라는 클래스를 제공합니다. 웹 크롤러나 스크레이퍼를 작성하여 웹사이트의 특정 섹션에 액세스할 수 있는지 여부를 결정할 때 유용할 수 있습니다. 다음은 사용자 에이전트가 URL에 액세스할 수 있는지 확인하기 위해 urllib.robotparser를 사용하는 예제입니다:

import urllib.robotparser

robot_parser = urllib.robotparser.RobotFileParser()
robot_parser.set_url("https://www.example.com/robots.txt")
robot_parser.read()

user_agent = "MyWebCrawler"
url_to_check = "https://www.example.com/some-page/"

can_fetch = robot_parser.can_fetch(user_agent, url_to_check)
print(f"가져올 수 있음: {can_fetch}")

urlopen 함수

urlopen 함수는 Python의 urllib.request 모듈의 일부입니다. 이 함수는 URL을 열고 URL에서 콘텐츠를 가져오는 데 사용됩니다. urlopen 함수는 URL에서 데이터를 읽고 상호 작용할 수 있는 메서드를 제공하는 HTTPResponse 객체를 반환합니다.

다음은 urlopen 함수에 대한 간략한 설명입니다.

  • 구문(Syntax)

    urllib.request.urlopen(url, data=None, timeout=<default timeout>, *, cafile=None, capath=None, cadefault=False, context=None)

  • 매개변수(Parameters)

    • url: 열 URL입니다. 문자열 또는 요청 객체일 수 있습니다.
    • data: 선택 사항입니다. 제공된 경우, POST 메서드를 사용할 때 HTTP 요청 본문으로 전송될 바이트열 객체여야 합니다.
    • timeout: 선택 사항입니다. URL을 열 수 없는 경우 포기하기 전에 대기할 시간(초)입니다. 기본값은 글로벌 기본 시간 제한 설정입니다.
    • cafile, capath, cadefault: 선택 사항입니다. 이러한 매개 변수는 SSL/TLS 연결에 대한 사용자 지정 CA(인증 기관) 인증서를 지정하는 데 사용됩니다.
    • context: 선택 사항입니다. 연결에 대한 사용자 지정 SSL/TLS 설정을 지정하는 데 사용할 수 있는 ssl.SSLContext 객체입니다.


다음은 urlopen 함수를 사용하여 URL을 열고 콘텐츠를 읽는 예제입니다.

import urllib.request

# URL을 열고 콘텐츠를 읽습니다.
url = "https://www.example.com"
response = urllib.request.urlopen(url)
content = response.read()

print(content)

 


urlopen 함수를 사용할 때는 URL을 여는 데 문제가 있거나 서버가 HTTP 오류 상태 코드를 반환하는 경우 발생할 수 있는 URLError 및 HTTPError와 같은 예외를 처리하는 것이 좋습니다. 다음은 예외 처리와 함께 urlopen을 사용하는 예시입니다.

import urllib.request
import urllib.error

url = "https://www.example.com"

try:
    response = urllib.request.urlopen(url)
    content = response.read()
    print(content)
urllib.error.URLError를 e로 제외합니다:
    print(f"오류가 발생했습니다: {e}")

 

urlopen 함수는 Python을 사용하여 URL을 열고, 콘텐츠를 가져오고, 웹 서비스와 상호 작용하는 편리한 방법입니다.


operator.itemgetter 함수

operator.itemgetter 함수는 파이썬의 연산자 모듈의 일부입니다. 이 함수는 피연산자의 __getitem__() 메서드를 사용하여 피연산자로부터 항목을 가져오는 호출 가능한 객체를 만드는 데 사용됩니다. 이터러블에서 특정 항목을 검색하거나 복잡한 데이터 구조를 정렬하거나 처리할 때 특히 유용합니다.

다음은 operator.itemgetter 함수에 대한 간략한 설명입니다.

  • 구문(Syntax): operator.itemgetter(item[, args...])

  • 매개변수
    • item: 피연산자에서 항목을 검색하는 데 사용할 인덱스 또는 키입니다.
    • args: 선택 사항. 여러 항목을 검색하기 위한 추가 인덱스 또는 키입니다.

다음은 operator.itemgetter 함수를 사용하여 목록에서 특정 항목을 검색하는 예제입니다.

import operator

data = [1, 2, 3, 4, 5]
get_second_item = operator.itemgetter(1)
second_item = get_second_item(data)

print(second_item) # 출력: 2


operator.itemgetter는 특정 키나 인덱스를 기준으로 딕셔너리 또는 튜플 목록을 정렬할 때도 매우 유용합니다. 다음은 예제입니다.

import operator

data = [
    {'name': 'Alice', 'age: 30},
    {'name': 'Bob', 'age': 25},
    {'name': 'Charlie', 'age': 35},
]

# 'age' 키를 기준으로 사전 목록을 정렬합니다.
sorted_data = sorted(data, key=operator.itemgetter('age'))
print(sorted_data)
# 출력: [{'name': 'Bob', 'age': 25}, {'name': 'Alice', 'age': 30}, {'name': 'Charlie', 'age': 35}]


operator.itemgetter 함수는 피연산자로부터 특정 항목을 가져오는 호출 가능한 객체를 만드는 편리한 방법입니다. 특히 복잡한 데이터 구조를 정렬하고 처리하는 데 유용합니다.


반응형
반응형

목차

  • PART1
    1. math 모듈
    2. math 함수에 from, as 구문 함께 사용하기
    3. random 모듈
    4. sys 모듈
    5. os 모듈
  • PART2
    1. datetime 모듈
    2. time 모듈
    3. urllib 모듈
    4. urlopen 함수
    5. operator.itemgetter 함수

math 모듈

파이썬의 math 모듈은 다양한 math 함수와 상수를 제공하므로 코드에서 math 연산을 더 쉽게 수행할 수 있습니다. 다음은 math 모듈을 사용하는 몇 가지 방법과 예제입니다:

1. 모듈을 가져옵니다.
math 모듈을 사용하려면 먼저 모듈을 임포트해야 합니다.

import math

 

2. math 함수
math 모듈은 sqrt, sin, cos, tan, log, ceiling, floor 등과 같은 여러 math 함수를 제공합니다.

# 숫자의 제곱근을 계산합니다.
result = math.sqrt(25)
print(result) # 출력합니다: 5.0

# 각의 사인, 코사인, 탄젠트를 계산합니다(라디안 단위).
angle = math.radians(30)
sin_value = math.sin(angle)
cos_value = math.cos(angle)
tan_value = math.tan(angle)
print(f"Sin: {sin_value}, Cos: {cos_value}, Tan: {tan_value}")

 

3. math 상수
math 모듈은 파이와 e와 같은 유용한 math 상수를 제공합니다.

# 원의 둘레를 계산합니다.
radius = 5
circumference = 2 * math.pi * 반지름
print(circumference) # 출력: 31.41592653589793

# 숫자의 자연 로그 계산하기
number = 2
natural_log = math.log(number, math.e)
print(natural_log) # 출력: 0.6931471805599453

 

4. 고급 math 함수
math 모듈에는 gcd, lcm, comb, perm 등과 같은 고급 함수도 포함되어 있습니다.

# 두 숫자의 최대공약수(GCD, greatest common divisor) 계산하기
gcd_result = math.gcd(15, 20)
print(gcd_result) # 출력: 5

# 한 번에 r씩 취한 n개의 항목의 조합과 순열을 계산합니다.
n = 5
r = 3
comb_result = math.comb(n, r)
perm_result = math.perm(n, r)
print(f"조합: {comb_result}, Permutations: {perm_result}") # 출력: Combinations: 10, Permutations: 60

math 함수에 from, as 구문 함께 사용하기

Python에서 math 모듈과 함께 from 및 as 키워드를 사용하면 필요한 경우 특정 함수를 가져오고 이름을 변경하는 것이 더 편리해집니다. 이러한 키워드를 사용하는 방법은 다음과 같습니다:

1. from
from 키워드를 사용하면 전체 모듈을 가져오는 대신 모듈에서 특정 함수나 어트리뷰트를 가져올 수 있습니다. 이 키워드는 몇 가지 함수만 사용하고 모든 함수를 가져오지 않으려는 경우에 유용할 수 있습니다.

예를 들어 math 모듈에서 sqrt 함수를 가져오고 싶다고 가정해 보겠습니다:

from math import sqrt

# 이제 math 접두사 없이 sqrt 함수를 사용할 수 있습니다.
square_root = sqrt(16)
print(square_root)

 

2. as
as 키워드를 사용하면 가져온 함수, 속성 또는 모듈의 이름을 바꿀 수 있습니다. 이름에 충돌이 있거나 더 편리한 이름을 사용하려는 경우 유용하게 사용할 수 있습니다.

예를 들어 math 모듈에서 sqrt 함수를 가져와서 square_root_function으로 이름을 바꾸고 싶다고 가정해 보겠습니다:

from math import sqrt as square_root_function

# 이제 이름이 바뀐 함수를 사용할 수 있습니다.
square_root = square_root_function(16)
print(square_root)

 

전체 모듈을 임포트할 때 as 키워드를 사용할 수도 있습니다:

import math as m

# 이제 m. 접두사가 붙은 math 모듈 함수를 사용할 수 있습니다.
square_root = m.sqrt(16)
print(square_root)


math 모듈에 from 및 as 키워드를 사용하면 이름 충돌을 피하고 필요에 따라 함수 이름을 단순화하면서 코드를 더 간결하고 읽기 쉽게 만들 수 있습니다.


random 모듈

파이썬의 랜덤 모듈은 난수를 생성하고 다양한 랜덤 연산을 수행하는 데 사용됩니다. 임의의 정수, 부동 소수점 숫자를 생성하고 리스트와 같은 시퀀스에서 항목을 무작위로 선택하는 함수를 제공합니다. 다음은 random 모듈에서 일반적으로 사용되는 몇 가지 함수입니다:

1. 모듈을 가져옵니다.
random 모듈을 사용하려면 먼저 모듈을 가져와야 합니다.

import random


2. 임의의 정수를 생성
randint 함수는 지정된 범위(양쪽 끝점 포함) 내에서 임의의 정수를 생성합니다.

# 1에서 10 사이의 임의의 정수를 생성합니다.
random_int = random.randint(1, 10)
print(random_int)


3. 임의의 부동 소수점 숫자를 생성
랜덤 함수는 0에서 1 사이의 임의의 부동 소수점 숫자를 생성합니다(0을 포함하지만 1은 아님).

# 0과 1 사이의 임의의 실수를 생성합니다.
random_float = random.random()
print(random_float)


4. uniform 함수는 지정된 범위 내에서 임의의 부동 소수점 숫자를 생성

# 1에서 10 사이의 임의의 실수를 생성합니다.
random_float = random.uniform(1, 10)
print(random_float)


5. 시퀀스에서 random 항목 선택하기
choice 함수는 시퀀스(예: 리스트 또는 튜플)에서 임의의 항목을 선택합니다.

# 리스트에서 random 요소 선택
items = ['사과', '바나나', '체리', '날짜']
random_item = random.choice(items)
print(random_item)


선택 함수는 시퀀스에서 여러 개의 random 항목을 선택하며, 가중치 및 교체 옵션을 선택할 수 있습니다.

# 리스트에서 random 요소 3개 선택 후 대체하기
random_items = random.choices(items, k=3)
print(random_items)


6. 시퀀스 셔플하기
셔플 함수는 리스트와 같이 변경 가능한 시퀀스의 요소를 random로 재배열합니다.

# 리스트 셔플
numbers = [1, 2, 3, 4, 5]
random.shuffle(numbers)
print(numbers)

sys 모듈

Python의 sys 모듈은 Python 인터프리터의 환경 및 스크립트에 전달되는 명령줄 인수와 같은 다양한 시스템별 매개변수 및 함수에 대한 액세스를 제공합니다. sys 모듈을 사용하는 방법은 다음과 같습니다:

1. sys 모듈을 가져옵니다.
sys 모듈을 사용하려면 먼저 모듈을 임포트해야 합니다:

import sys

 

2. sys 모듈의 일반적인 용도

 

  1) 명령줄 인자에 액세스


sys.argv 리스트를 사용하여 스크립트에 전달된 명령줄 인수에 액세스할 수 있습니다. 리스트의 첫 번째 요소인 sys.argv[0]은 스크립트의 이름이고, 그 이후의 요소는 인수입니다.

import sys

# 스크립트 이름과 인수를 인쇄합니다.
print("스크립트 이름:", sys.argv[0])

for i, arg in enumerate(sys.argv[1:], start=1):
    print(f"인자 {i}:", arg)

 


  2) 스크립트를 종료

sys.exit() 함수를 사용하여 지정된 종료 코드로 스크립트를 종료할 수 있습니다. 종료 코드가 0이면 일반적으로 성공적으로 종료되었음을 나타내며, 0이 아닌 종료 코드는 오류를 나타냅니다.

import sys

# 종료 코드 0으로 스크립트를 종료합니다.
sys.exit(0)

 

  3) 파이썬 버전을 확인

sys.version_info 튜플을 사용하여 파이썬 인터프리터의 버전을 확인할 수 있습니다.

import sys

# 파이썬 버전을 인쇄합니다.
print("파이썬 버전:", sys.version_info)

 

  4) 파이썬 모듈 검색 경로에 디렉터리를 추가

sys.path 리스트를 사용하여 파이썬 모듈 검색 경로에 디렉터리를 추가하여 사용자 정의 모듈을 가져올 수 있습니다.

import sys

# 파이썬 모듈 검색 경로에 사용자 정의 디렉터리 추가하기
sys.path.append("/path/to/your/custom/directory")

os 모듈

Python의 os 모듈은 운영 체제와 상호 작용할 수 있는 방법을 제공하여 파일 및 디렉터리 작업을 수행하고, 환경 변수에 액세스하고, 시스템 명령을 실행할 수 있도록 합니다. 다음은 os 모듈에 대한 개요입니다:

1. os 모듈 가져오기.
os 모듈을 사용하려면 먼저 모듈을 임포트해야 합니다:

import os

 

2. os 모듈의 일반적인 용도


  1) 디렉터리의 내용을 나열

os.listdir() 함수를 사용하여 지정된 디렉터리에 있는 파일과 디렉터리를 나열할 수 있습니다.

import os

# 현재 디렉터리의 내용을 나열합니다.
print(os.listdir("."))

 

  2) 새 디렉토리 생성

os.mkdir() 함수를 사용하여 새 디렉터리를 만들 수 있습니다.

import os

# 새 디렉토리 만들기
os.mkdir("new_directory")

 

  3) 파일 또는 디렉터리 이름 변경

os.rename() 함수를 사용하여 파일 또는 디렉터리 이름을 바꿀 수 있습니다.

import os

# 파일 또는 디렉토리 이름 바꾸기
os.rename("old_name", "new_name")

 

  4) 파일을 제거

os.remove() 함수를 사용하여 파일을 삭제할 수 있습니다.

import os

# 파일 제거
os.remove("file_to_delete.txt")

 

  5) 환경 변수를 가져오고 설정

os.environ 딕셔너리를 사용하여 환경 변수에 액세스하고 수정할 수 있습니다.

import os

# 환경 변수의 값을 가져옵니다.
print(os.environ["PATH"])

# 환경 변수 값 설정
os.environ["MY_VARIABLE"] = "my_value"

 

  6) 시스템 명령을 실행

os.system() 함수를 사용하여 시스템 명령을 실행할 수 있습니다.

import os

# 시스템 명령 실행
os.system("ls")

 

반응형
반응형

목차

  1. 모듈이란
  2. 표준 모듈과 외부 모듈
  3. 모듈을 읽어오는 방법

모듈이란

Python의 모듈은 일반적으로 확장자가 .py인 Python 코드를 포함하는 파일로, 다른 Python 스크립트나 프로그램에서 가져와서 사용할 수 있습니다. 모듈은 코드를 더 쉽게 공유하고 유지 관리할 수 있는 더 작은 독립된 단위로 분리하여 정리하고 재사용하는 데 사용됩니다.

모듈에는 실행 코드뿐만 아니라 함수, 클래스, 변수도 포함될 수 있습니다. 모듈을 가져오면 Python은 모듈 내부의 코드를 실행하고 그 내용을 가져오기 스크립트에서 사용할 수 있도록 합니다.

모듈을 사용하려면 모듈 이름(.py 확장자 없이) 뒤에 import 문을 사용하여 모듈을 가져와야 합니다. 예를 들면 다음과 같습니다.

import my_module


모듈을 가져오면 모듈 이름을 접두사로 사용하여 해당 모듈의 함수, 클래스 및 변수에 액세스 할 수 있습니다. 예를 들면 다음과 같습니다.

result = my_module.my_function()


Python에는 수학, 날짜/시간, OS 등 유용한 기능을 제공하는 수많은 기본 제공 모듈이 있습니다. 사용자 정의 모듈을 직접 만들거나 pip와 같은 패키지 관리자를 통해 설치된 외부 모듈을 사용할 수도 있습니다.


표준 모듈과 외부 모듈
  • 표준 모듈
    표준 모듈은 Python 설치와 함께 제공되는 모듈 모음인 Python 표준 라이브러리의 일부입니다. 이러한 모듈은 파일 I/O, 정규식, 수학 연산, 날짜 및 시간 처리 등과 같은 다양한 기능을 제공합니다. 표준 모듈의 예시는 다음과 같습니다.

    1. math: 수학 함수 및 상수를 제공합니다.
    2. datetime: 날짜와 시간 조작을 위한 클래스를 제공합니다.
    3. os: 운영체제와 상호 작용하기 위한 함수를 제공합니다.
    4. re: 정규 표현식 작업을 위한 함수를 제공합니다.
    5. json: JSON 데이터로 작업하기 위한 함수를 제공합니다.

  • 외부 모듈
    외부 모듈은 Python 핵심 개발팀 외부의 개발자가 만들고 유지 관리합니다. 이러한 모듈은 Python 표준 라이브러리에 포함되어 있지 않으며 pip 또는 conda와 같은 패키지 관리자를 사용하여 별도로 설치해야 합니다. 외부 모듈은 일반적으로 추가 기능을 제공하거나 표준 모듈에서 제공하는 기존 기능을 확장합니다. 많이 사용되는 외부 모듈의 몇 가지 예는 다음과 같습니다.

    1. numpy: 효율적인 숫자 배열 연산과 선형 대수 기능을 제공합니다.
    2. pandas: 데이터 프레임 객체를 포함한 데이터 조작 및 분석 도구를 제공합니다.
    3. requests: HTTP 요청을 하는 간단하고 편리한 방법을 제공합니다.
    4. flask: 웹 애플리케이션을 구축하기 위한 경량 웹 프레임워크입니다.

모듈을 읽어오는 방법

Python에서 모듈을 사용하려면 먼저 모듈을 임포트해야 합니다. import 문은 모듈을 Python 코드에 로드하는 데 사용됩니다. 다음은 모듈을 임포트 하여 코드에서 사용하는 방법에 대한 몇 가지 예입니다:

1. 모듈 임포트하기

import math


이 예에서는 Python 표준 라이브러리에서 math 모듈을 가져옵니다. 모듈을 가져온 후에는 모듈 이름 뒤에 점과 함수 또는 변수 이름을 사용하여 모듈에서 제공하는 함수 및 변수에 액세스 할 수 있습니다.

result = math.sqrt(25)
print(result) # 출력: 5.0


2. 모듈에서 특정 함수나 변수 가져오기

from math import sqrt, pi


이 예에서는 수학 모듈에서 sqrt 함수와 pi 상수만 가져옵니다. 모듈 이름을 접두사로 사용하지 않고 가져온 함수와 변수를 바로 사용할 수 있습니다.

result = sqrt(25)
print(result) # 출력: 5.0
print(파이) # 출력: 3.141592653589793


3. 별칭으로 모듈 임포트하기

import numpy as np


이 예제에서는 서드파티 모듈 numpy를 가져와 별칭 np를 할당합니다. 이렇게 하면 모듈의 함수와 변수에 액세스할 때 전체 모듈 이름 대신 별칭을 사용할 수 있으므로 코드가 더 짧고 가독성이 높아집니다.

array = np.array([1, 2, 3, 4, 5])
print(array) # 출력: [1 2 3 4 5]


numpy와 같은 서드파티 모듈을 사용하려면 먼저 pip나 conda와 같은 패키지 관리자를 사용하여 설치해야 한다는 것을 기억해야 합니다.


각 모듈의 사용법은 다음 포스팅에서 다루도록 하겠습니다.

반응형
반응형

목차

  1. 예외란
  2. 예외 객체
  3. 예외를 구분하는 방법
  4. 예외를 처리하는 과정과 프로그램이 갑자기 종료되는 이유
  5. raise 키워드

예외란

파이썬에서 예외는 프로그램 실행 중에 오류나 비정상적인 조건이 발생했을 때 발생하는 이벤트입니다. 예외는 프로그램이 정상적으로 처리하거나 진행할 수 없는 상황이 발생했을 때 발생합니다.

예외는 일반적으로 코드의 오류 또는 0으로 나누기, 목록에 존재하지 않는 요소 액세스, 존재하지 않는 파일 열기 시도와 같은 예기치 않은 상황에 의해 트리거됩니다. 예외가 발생하면 프로그램의 정상적인 흐름이 중단되고 프로그램은 예외 처리기라는 특수 코드 블록으로 이동합니다.

Python에서 예외는 기본 클래스 BaseException에서 파생된 클래스의 인스턴스인 객체입니다. Python 표준 라이브러리에는 다양한 유형의 오류에 해당하는 ValueError, TypeError, IndexError 및 FileNotFoundError와 같은 다양한 기본 제공 예외 클래스가 있습니다. BaseException 클래스 또는 그 하위 클래스 중 하나에서 상속하여 사용자 정의 예외 클래스를 정의할 수도 있습니다.

Python의 예외 처리는 try-except 블록을 사용하여 수행됩니다. 예외를 발생시킬 수 있는 코드는 try 블록 안에 배치되고 예외를 처리하는 코드는 예외 블록 안에 배치됩니다. try 블록에서 예외가 발생하면 프로그램은 해당 예외 블록으로 점프하여 예외를 처리합니다. 예외가 발생하지 않으면 프로그램은 try-except 블록 이후에도 코드를 계속 실행합니다.


예외 객체

파이썬에서 예외 객체는 베이스 클래스 BaseException에서 파생된 클래스의 인스턴스입니다. 예외 객체는 프로그램 실행 중에 오류 또는 비정상적인 조건이 발생할 때 생성됩니다. 이러한 객체에는 발생한 오류에 대한 정보가 포함되어 있어 예외를 적절히 처리할 수 있습니다.

예외가 발생하면 Python은 발생한 특정 오류 유형과 관련된 예외 객체를 생성합니다. Python 표준 라이브러리에서 제공하는 기본 제공 예외 클래스(예: ValueError, TypeError, IndexError 및 FileNotFoundError)가 있습니다. 이러한 클래스는 다양한 유형의 오류에 대응하며 BaseException 클래스 또는 그 하위 클래스 중 하나에서 상속됩니다.

BaseException 클래스 또는 그 하위 클래스 중 하나에서 상속하여 사용자 지정 예외 클래스를 직접 만들 수도 있습니다. 사용자 지정 예외 클래스를 정의하면 오류에 대한 보다 구체적인 정보를 제공하고 코드에서 오류를 보다 정확하게 처리할 수 있습니다.

try-except 블록을 사용하여 예외를 처리할 때 as 키워드를 사용하여 예외 객체를 캡처할 수 있습니다. 이렇게 하면 오류 메시지나 예외와 관련된 추가 데이터 등 객체에 포함된 정보에 액세스할 수 있습니다. 다음은 예시입니다:

try:
    result = 1 / 0
except ZeroDivisionError as e:
    print(f"An error occurred: {e}")


이 예제에서는 0으로 나눗셈이 발생하면 ZeroDivisionError 예외가 발생합니다. 예외 블록은 as 키워드를 사용하여 예외 객체를 캡처하고 변수 e에 할당합니다. 그러면 예외 객체에 포함된 오류 메시지가 인쇄됩니다.


예외를 구분하는 방법

Python에서는 try-except 문에 여러 개의 예외 블록을 지정하여 다양한 유형의 예외를 구분할 수 있습니다. 각 예외 블록은 특정 예외 유형과 연관되어 있으므로 다양한 오류를 맞춤형으로 처리할 수 있습니다. 다음은 이 개념을 설명하는 예제입니다.

try:
    # 예외를 발생시킬 수 있는 일부 코드
    result = 1 / 0
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")
except ValueError:
    print("유효하지 않은 값이 발생했습니다.")
except TypeError:
    print("잘못된 데이터 타입이 사용되었습니다.")


이 예제에서 try 블록에는 예외를 발생시킬 수 있는 코드가 포함되어 있습니다. 예외가 발생하면 프로그램은 각 예외 블록을 검사하여 발생한 예외에 해당하는 예외 블록을 찾습니다. 일치하는 예외 블록이 발견되면 해당 블록 내의 코드가 실행됩니다.

각 예외 블록에서 as 키워드를 사용하여 예외 객체를 캡처할 수도 있습니다. 이렇게 하면 오류에 대한 자세한 정보에 액세스할 수 있습니다:

try:
    # 예외를 발생시킬 수 있는 일부 코드
    result = 1 / 0
except ZeroDivisionError as e:
    print(f"ZeroDivisionError occurred: {e}")
except ValueError as e:
    print(f"ValueError occurred: {e}")
except TypeError as e:
    print(f"TypeError occurred: {e}")


여러 예외 블록을 사용하고 서로 다른 예외 유형을 지정하면 다양한 예외를 다르게 처리하고 적절한 오류 메시지 또는 복구 작업을 제공할 수 있습니다.


예외를 처리하는 과정과 프로그램이 갑자기 종료되는 이유

Python에서 예외를 처리하기 위해 여러 개의 예외 블록을 사용하는 경우 프로그램은 if-elif-else 조건문이 작동하는 방식과 유사하게 각 블록을 순차적으로 확인합니다. 발생한 예외가 예외 블록에 지정된 유형과 일치하면 해당 블록 내의 코드가 실행됩니다. 예외 블록 중 발생한 예외와 일치하는 블록이 없으면 예외가 처리되지 않은 상태로 유지되어 프로그램이 갑자기 종료됩니다. 이 개념을 설명하기 위해 예제를 살펴보겠습니다.

try:
    # 예외를 발생시킬 수 있는 일부 코드
    value = int("abc")
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")
except ValueError:
    print("유효하지 않은 값이 발생했습니다.")

 

이 예제에서 try 블록에는 숫자가 아닌 문자열을 정수로 변환하려고 시도하는 코드가 포함되어 있으며, 이로 인해 ValueError가 발생합니다. 프로그램은 블록을 제외한 각 블록을 순서대로 검사하고 ValueError 블록을 찾으면 해당 블록 내의 코드를 실행합니다.

그러나 발생한 예외가 지정된 예외 유형과 일치하지 않는 경우 프로그램은 처리되지 않은 예외로 종료됩니다. 예를 들어

try:
    # 예외를 발생시킬 수 있는 일부 코드
    value = int("abc")
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")


이 경우 ValueError가 발생하지만 이를 처리할 수 있는 예외 블록이 없습니다. 결과적으로 프로그램은 처리되지 않은 예외와 함께 종료됩니다.

이 시나리오를 방지하려면 마지막에 일반 예외 블록을 추가하여 처리되지 않은 나머지 예외를 처리할 수 있습니다:

try:
    # 예외를 발생시킬 수 있는 일부 코드
    value = int("abc")
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")
except ValueError:
    print("유효하지 않은 값이 발생했습니다.")
except Exception:
    print("예기치 않은 오류가 발생했습니다.")

 

이렇게 추가하면 특정 예외 블록과 일치하지 않는 예외가 발생해도 일반 예외 블록이 이를 처리하여 프로그램이 예기치 않게 종료되는 것을 방지할 수 있습니다.


raise 키워드

Python의 raise 키워드는 프로그램 실행 중에 예외를 수동으로 발생시키는 데 사용됩니다. 기본 제공 예외를 발생시키거나 사용자 정의 예외를 정의할 수 있습니다. 예외를 발생시킨다는 것은 프로그램의 정상적인 흐름을 중단하고 일반적으로 시도 예외 블록 내부의 예외 처리기로 제어권을 넘기겠다는 의미입니다. 다음은 raise 키워드를 사용하는 방법의 예시입니다.

def check_age(age):
    if age < 0:
        raise ValueError("나이는 음수일 수 없습니다")

try:
    user_age = -5
    check_age(user_age)
except ValueError as ve:
    print(f"Error: {ve}")

 

이 예제에서는 나이 매개변수를 받는 check_age 함수를 정의했습니다. 연령이 0보다 작으면 사용자 정의 오류 메시지와 함께 ValueError를 발생시킵니다. try 블록에서는 유효하지 않은 나이 -5를 사용하여 check_age 함수를 호출합니다. ValueError가 발생하면 해당 예외 블록으로 제어가 전달되고 예외를 포착하여 오류 메시지를 출력합니다.

raise 키워드를 사용하면 문제를 보다 효과적으로 식별하고 수정하는 데 도움이 되는 설명이 포함된 오류 메시지로 예외를 발생시키고 처리하여 프로그램에서 보다 강력하고 의미 있는 오류 처리를 생성할 수 있습니다.


 

반응형