Tech & Development/Programming Languages
[Python] 함수형 프로그래밍
[Python] 함수형 프로그래밍
2024.11.24함수형 프로그래밍은 함수를 일급 객체로 취급하며, 불변 데이터와 순수 함수를 중심으로 하는 프로그래밍 패러다임입니다. Python은 객체지향 언어이지만, 함수형 프로그래밍의 강력한 기능도 제공합니다. 이 글에서는 Python에서 제공하는 함수형 프로그래밍 기법과 이를 활용하는 방법을 다룹니다.1. 함수형 프로그래밍이란?함수형 프로그래밍은 다음과 같은 특징을 가지고 있습니다:순수 함수: 함수는 입력값만을 사용하며 외부 상태를 변경하지 않습니다.불변성: 데이터는 변경되지 않고, 항상 새 데이터를 반환합니다.고차 함수: 함수를 매개변수로 전달하거나 반환할 수 있습니다.Python에서 함수형 프로그래밍을 지원하는 주요 도구는 map(), filter(), reduce(), 그리고 lambda 함수입니다.2. m..
[Python] 시간과 날짜 처리
[Python] 시간과 날짜 처리
2024.11.23Python은 날짜와 시간을 다루기 위한 강력한 모듈들을 제공합니다. datetime, time, calendar 모듈을 활용하면 다양한 날짜와 시간 작업을 간단히 수행할 수 있습니다. 이 글에서는 날짜와 시간을 다루는 기본적인 방법, 시간 계산, 특정 포맷 변환 등 유용한 기능들을 소개합니다.1. datetime 모듈: 날짜와 시간 처리의 기본datetime 모듈은 날짜와 시간 정보를 생성, 조작, 포맷팅 하는 데 사용됩니다.날짜와 시간 생성from datetime import datetime# 현재 날짜와 시간now = datetime.now()print("현재 날짜와 시간:", now)# 특정 날짜와 시간specific_date = datetime(2024, 12, 25, 15, 30)print("..
[Python] 제너레이터 (Generator)
[Python] 제너레이터 (Generator)
2024.11.18Python에서 제너레이터(Generator)는 큰 데이터를 메모리에 효율적으로 처리할 수 있게 도와주는 특별한 이터레이터입니다. 일반적인 함수와 달리, 제너레이터는 값을 한 번에 하나씩 반환하고, 매번 호출될 때 이전 상태를 기억합니다. 제너레이터는 yield 키워드를 사용하여 값을 반환하며, return을 사용하면 더 이상 값을 생성하지 않고 종료됩니다제너레이터의 특징메모리 효율성: 제너레이터는 값을 필요할 때마다 하나씩 생성하므로, 큰 데이터를 처리할 때 메모리를 아낄 수 있습니다.Lazy Evaluation(지연 평가): 모든 값을 한꺼번에 생성하지 않고, 요청할 때마다 값을 생성하여 반환합니다.상태 유지: yield 키워드 덕분에 함수의 상태가 유지되며, 중단된 위치에서 다시 시작할 수 있습니다..
[Python] 정규 표현식 (Regex)
[Python] 정규 표현식 (Regex)
2024.11.12정규 표현식(Regex, Regular Expression)은 문자열에서 특정 패턴을 찾고, 추출하거나, 치환할 때 사용하는 방법입니다. Python에서는 re 모듈을 통해 정규 표현식을 사용할 수 있습니다. 정규 표현식은 다양한 패턴을 통해 복잡한 문자열을 다룰 수 있어, 데이터 처리, 텍스트 분석, 웹 크롤링 등에 자주 활용됩니다.기본적인 정규 표현식 패턴정규 표현식에는 다양한 패턴이 있으며, 기본적인 패턴은 다음과 같습니다:. : 줄 바꿈 문자를 제외한 모든 문자 하나와 일치^ : 문자열의 시작을 의미$ : 문자열의 끝을 의미* : 앞의 문자가 0번 이상 반복됨을 의미+ : 앞의 문자가 1번 이상 반복됨을 의미? : 앞의 문자가 0번 또는 1번 나타남을 의미{n} : 정확히 n번 반복되는 패턴{n,..
[Python] 코드를 한 줄로 줄이는 방법: 내포 표현식과 One-liners
[Python] 코드를 한 줄로 줄이는 방법: 내포 표현식과 One-liners
2024.11.111. 리스트 내포 (List Comprehension)리스트 내포는 조건에 따라 요소를 필터링하거나 변환하여 새로운 리스트를 만들 수 있습니다. 예를 들어, 0부터 9까지의 숫자 중 짝수만 제곱한 리스트를 생성하려면 다음과 같이 작성할 수 있습니다.squares = [x**2 for x in range(10) if x % 2 == 0]print(squares) # [0, 4, 16, 36, 64]2. 딕셔너리 내포 (Dictionary Comprehension)딕셔너리 내포를 사용하면 키-값 쌍을 조건에 맞게 필터링하여 새로운 딕셔너리를 생성할 수 있습니다. 예를 들어, 0부터 4까지의 숫자와 그 제곱을 키-값으로 하는 딕셔너리는 다음과 같이 만들 수 있습니다.squares_dict = {x: x**2..
Python Packaging: pyproject.toml로 프로젝트 설정을 간편하게!
Python Packaging: pyproject.toml로 프로젝트 설정을 간편하게!
2024.04.25Python 프로젝트를 개발하다 보면 프로젝트 설정과 관련된 여러 파일들을 다뤄야 합니다. setup.py, requirements.txt, Pipfile, setup.cfg 등 다양한 파일들이 존재하죠. 하지만 이제 pyproject.toml이라는 새로운 표준이 등장했습니다. 이 글에서는 pyproject.toml에 대해 자세히 알아보고, 어떻게 구성하고 사용하는지 살펴보겠습니다.pyproject.toml 소개pyproject.toml은 Python 프로젝트의 빌드 시스템과 관련된 설정을 포함하는 파일입니다. 패키징 도구뿐만 아니라 linters, type checkers 등 다양한 도구들에서 사용됩니다. pyproject.toml에는 세 가지 TOML 테이블이 있을 수 있습니다.[build-syste..
Python 패키지 관리: requirements.txt 활용하기 (@ file)
Python 패키지 관리: requirements.txt 활용하기 (@ file)
2023.09.25Python 개발을 할 때, 프로젝트에 필요한 패키지들을 효과적으로 관리하는 것은 매우 중요합니다. `requirements.txt`는 이러한 패키지 관리를 도와주는 간단하면서도 강력한 도구입니다. 1. requirements.txt란? requirements.txt는 프로젝트에서 사용하는 Python 패키지들의 목록을 포함하는 텍스트 파일입니다. 이 파일을 통해 다른 개발자나 환경에서도 동일한 패키지와 버전을 쉽게 설치할 수 있습니다. 2. requirements.txt 생성하기 현재 환경에 설치된 패키지들의 목록을 `requirements.txt`로 저장하려면 다음 명령어를 사용합니다. 1) 기본방법 pip freeze > requirements.txt pip freeze 명령어도 패키지 목록을 생성..
Jupyter Notebook에 가상 환경 커널 추가
Jupyter Notebook에 가상 환경 커널 추가
2023.08.21Jupyter Notebook (Jupyter Lab)에서 가상 환경을 커널로 추가하려면 아래 내용을 참고하세요. 1. 먼저, 원하는 가상 환경을 생성합니다. 가상 환경을 생성하는 방법은 여러 가지가 있지만, virtualenv 또는 conda 등을 사용할 수 있습니다. Python 가상환경 구성 [참고] 가상환경을 구성하는 이유 python은 현재 2.x 버젼과 3.x 버젼이 혼용되는 과도기에 있고 때론, 2.x 버젼의 python 환경에서 프로젝트를 개발해야할 때도 있고, 3.x버젼의 python 환경에서 개발해 yunwoong.tistory.com 2. 해당 가상 환경을 활성화합니다. virtualenv의 경우: source myenv/bin/activate conda의 경우: conda activ..
Mojo🔥: AI를 위한 새로운 프로그래밍 언어
Mojo🔥: AI를 위한 새로운 프로그래밍 언어
2023.07.03세계에서 가장 많이 사용되는 프로그래밍 언어 중 하나인 Python은 그 사용자 친화적인 특성 덕분에 다양한 분야에서 활용되고 있습니다. 웹 개발자부터 데이터 과학자, 마케터, 심지어 AI 전문가 등, 여러 전문가들이 Python을 선택하는 주된 이유는 초보자에게도 친숙하며 읽고 쓰기 쉬운 언어라는 점입니다. 그러나 C++이나 Rust에 비해 Python의 실행 속도는 훨씬 느리고 배포 과정이 복잡하다는 단점이 있습니다. Python 프로그램을 완성한 후 이를 사용자에게 배포하려면, Python 자체를 설치해야 하고 해당 프로그램을 실행하는 데 필요한 모든 패키지를 추가로 설치해야 합니다. C++은 속도가 빠르지만, 배우고 사용하기 어렵다는 단점이 있었습니다. 이러한 문제점들을 해결하기 위해 등장한 것이..
gradio를 이용한 Chatbot 만들기 (GPT-3.5)
gradio를 이용한 Chatbot 만들기 (GPT-3.5)
2023.04.03OpenAI가 ChatGPT를 내놓은 이후 전 세계가 들썩이고 있습니다. 다양한 기업들이 자신만의 기술과 ChatGPT를 접목한 사업한 사업을 선보이고 있습니다. Chatbot은 고객과 최종 사용자가 직접 소통하도록 설계되었기 때문에 다양한 입력 프롬프트에 직면했을 때 Chatbot이 예상대로 작동하는지 확인하는 것이 매우 중요합니다. gradio는 Chatbot 데모를 쉽게 구축하고 GUI를 통해 직접 테스트할 수 있습니다. OpenAI의 GPT-3.5 모델로 챗봇 프로그램을 만들어 보겠습니다. 1. 설치 (Installation) gradio 패키지 설치는 pip 명령어를 이용하여 설치할 수 있습니다. pip install gradio gradio 설치와 관련된 내용은 이전 글을 참고하시기 바랍니다...
gradio 시작하기 (설치방법)
gradio 시작하기 (설치방법)
2023.04.03AI 학습 모델은 강력하고 매우 흥미롭지만 그 자체로만 본다면 그다지 유용해 보이지 않습니다. 모델이 완성되면 어떠한 가치를 제공할 수 있는지 증명이 필요한데 Accuracy, Precision, Recall, IOU, PSNR와 같은 성능 지표로는 확인이 어렵기 때문입니다. 데이터 과학자나 머신러닝 모델을 연구하는 개발자가 학습 모델을 쉽고 빠르게 배포하여 이해 관계자로부터 피드백을 받을 수 있는 몇 가지 도구가 등장했습니다. 대표적으로 gradio, Streamlit, Dash, Flask가 있는데 이번 글에서는 Gradio를 설치하고 간단한 예제를 수행해 보도록 하겠습니다. 설치 (Installation) gradio 패키지 설치는 pip 명령어를 이용하여 설치할 수 있습니다. pip install..
Streamlit을 이용한 Chatbot 만들기 (Blenderbot, GPT-3)
Streamlit을 이용한 Chatbot 만들기 (Blenderbot, GPT-3)
2023.03.31streamlit-chat은 Streamlit을 이용하여 실시간 대화형 Web 애플리케이션을 쉽게 만들 수 있는 패키지입니다. 만드는 방법은 매우 간단하며 예제 확인도 가능합니다. streamlit-chat으로 Hugging Face에서 제공하는 Facebook AI BlenderBot과 OpenAI의 GPT-3 모델로 챗봇 프로그램을 만들어 보겠습니다. 1. 설치 (Installation) streamlit과 streamlit-chat 패키지 설치는 pip 명령어를 이용하여 설치할 수 있습니다. pip install streamlit pip install streamlit-chat streamlit 설치와 관련된 내용은 이전 글을 참고하시기 바랍니다. Streamlit 시작하기 (설치방법) Stream..