프로그래밍/Python 33

파이썬 - 비동기 컨텍스트 매니저 async with .. as ..

async with 와 as 자세한 설명 및 예제 (Python Async)async with 와 as는 파이썬의 비동기 프로그래밍 (asyncio)에서 비동기 컨텍스트 관리자를 사용할 때 핵심적인 역할을 합니다. 일반적인 with 구문과 비슷하지만, 비동기 작업에 특화되어 리소스 관리를 더욱 강력하고 효율적으로 만들어줍니다.1. 컨텍스트 관리자 (Context Manager) 복습: with 구문과 as 절 (동기)먼저, 일반적인 (동기) 컨텍스트 관리자를 이해하는 것이 중요합니다. with 구문은 특정 리소스 (파일, 연결 등)를 안전하게 사용하고, 사용 후 자동으로 정리 (close, release 등)하도록 보장하는 메커니즘입니다.# 일반적인 with 구문 (동기 파일 I/O)with open("..

파이썬 - Function annotation ("->")

Python Function Annotations (100줄 이내 설명)Python Function Annotations는 함수 매개변수와 반환 값에 대한 타입 힌트 및 메타데이터를 제공하는 기능입니다. Python 3.5+ 부터 사용 가능하며, def 키워드 함수 정의 시 콜론 : 뒤에 표현식을 사용하여 어노테이션을 추가합니다.핵심은 리턴 타입을 강제하는 것이 아니라, 개발자나 IDE 와 같은 도구에게 가독성을 높이기 위한 방법이다.  문법:def function_name(param1: type_hint, param2: type_hint = default_value) -> return_type_hint: # 함수 내용 return valueparam1: type_hint: 매개변수 param..

파이썬 - Coroutine과 await

Python 코루틴 (Coroutine) 상세 설명코루틴은 프로그래밍의 패러다임 중 하나로, 서브루틴(함수)을 일반화한 개념입니다. 단순히 순차적으로 실행되는 함수와 달리, 코루틴은 실행을 일시 중단(pause)했다가 나중에 다시 재개(resume)할 수 있는 능력을 핵심으로 가집니다. 이러한 특징 덕분에 코루틴은 비동기 프로그래밍과 동시성 프로그래밍에서 매우 강력한 도구로 활용됩니다.1. 코루틴이란 무엇인가? (서브루틴과의 비교)서브루틴 (Subroutine, 일반 함수):단방향 진입/탈출 (Single entry point/exit point): 함수는 시작점에서 진입하여, 종료점에서 탈출합니다.호출자-피호출자 관계 (Caller-Callee): 함수를 호출하는 쪽(caller)과 호출되는 쪽(cal..

파이썬 - Generator & Iterator

제너레이터(Generator)와 이터레이터(Iterator) 비교: 장단점제너레이터와 이터레이터는 모두 파이썬에서 값을 순차적으로 생성하는 데 사용되는 객체입니다. 하지만 구현 방식과 사용 사례에서 차이가 있습니다.이터레이터 (Iterator)정의:이터레이터는 __iter__() 와 __next__() 라는 두 개의 특별한 메서드(매직 메서드 또는 던더 메서드)를 구현하여 값을 순차적으로 꺼낼 수 있도록 하는 객체입니다.__iter__() 메서드는 이터레이터 객체 자신을 반환합니다.__next__() 메서드는 다음 값을 반환하거나, 더 이상 반환할 값이 없을 때 StopIteration 예외를 발생시킵니다.구현 예:class MyIterator: def __init__(self, data): ..

파이썬 - yield 키워드

yield 키워드 설명yield 키워드는 Python에서 제너레이터(Generator) 함수를 정의할 때 사용되는 특별한 키워드입니다. 제너레이터는 이터레이터(Iterator)의 한 종류로, 값을 한 번에 모두 메모리에 저장하는 대신, 필요할 때마다 하나씩 생성하여 반환합니다.1. 제너레이터 (Generator)이터레이터(Iterator): __iter__() 와 __next__() 메서드를 구현하여 값을 순차적으로 꺼낼 수 있는 객체입니다. 리스트, 튜플, 문자열 등이 이터레이터의 예입니다.제너레이터(Generator): yield 키워드를 사용하여 이터레이터를 간단하게 생성하는 방법입니다. 함수 내에서 yield를 만나면, 해당 값을 반환하고 함수의 실행을 일시 중지합니다. 다음에 다시 호출되면, 중..

파이썬 - pass 키워드

pass 문의 의미와 Python 프로그래밍에서의 사용 용도pass 문의 의미pass 문은 Python에서 아무런 동작도 하지 않는 문장입니다. 즉, 문법적으로는 문장이 필요하지만, 실제로 어떤 코드도 실행하고 싶지 않을 때 사용합니다. pass는 일종의 자리 표시자(placeholder) 역할을 합니다.Python 프로그래밍에서 pass 문의 사용 용도빈 클래스 또는 함수 정의:클래스나 함수의 골격만 먼저 작성하고, 나중에 내용을 채우고 싶을 때 pass를 사용하여 빈 블록을 만듭니다.이는 특히 코드를 설계하는 초기 단계나, 다른 사람과의 협업 시 인터페이스를 먼저 정의할 때 유용합니다.class MyClass: # 클래스 정의는 필요하지만 내용은 나중에 작성 passdef my_function..

파이썬 - 클래스 개념

파이썬 클래스 개념다른 언어와 마찬가지로 인스턴스 변수와 메소드가 있고, 클래스 변수와 메소드가 있다. class Circle: # 클래스 변수: 원주율 pi = 3.14159 def __init__(self, radius): # 인스턴스 변수: 반지름 self.radius = radius # 인스턴스 메서드: 원의 넓이 계산 def area(self): return Circle.pi * (self.radius ** 2) # 인스턴스 메서드: 원의 둘레 계산 def circumference(self): return 2 * Circle.pi * self.radius # 클래스 메서드: 원주율 변경 @class..

Python yield

`yield`는 Python에서 generator를 만드는 데 사용되는 키워드다. `yield`를 사용하면 함수의 실행을 일시 중지하고 값을 반환한 다음, 호출자가 필요할 때 실행을 재개할 수 있다. 이 기능을 사용하면 메모리를 효율적으로 사용하면서 큰 데이터 스트림을 처리할 수 있다. 이를 설명하기 위해 주어진 예제를 살펴보자.def return_abc(): print("From return_abc") return list("ABC")def yield_abc(): i=0 for char in list("ABC"): yield(char) i +=1 print(str(i) + " From yield_abc")for ch in return_abc(): print("Calling re..

파이썬 전역 변수

파이썬에서 전역변수 사용하기 (2.7X 버전) 조대협 (http://bcho.tistory.com) 파이썬에서 전역 변수를 사용하려고 하니 "Unbound Local Error"가 나더라.파이썬은 로컬 변수를 자바처럼 쓸수가 없다. 잘못된 코드 global_value = 1 def myfunction(): global_value=global_value + 1 올바른 코드 global_value = 1 def myfunction(): global global_value global_value=global_value + 1 글로벌 변수로 쓰려면, 글로벌 변수를 쓰려는 곳에서 global 이라는 키워드로 선언을 해줘야 그 전역 변수를 불러다가 쓸 수 있다.

django 에서 REST API 만들기

Dango에서 간단한 REST API 만들기 조대협 Django에서 REST API를 만들려면 가장 널리 사용되는 프레임웍중 하나가 dango rest_framework이다.http://django-rest-framework.org/tutorial/quickstart 설치는 다음과 같다.pip install djangorestframeworkpip install markdown # Markdown support for the browsable API.pip install django-filter # Filtering support 1. quickstart라는 앱을 생성 C:\Users\terry\git\django_restframework_sample\django_restframework_sample>p..