본문 바로가기
관리자

Programming-[Backend]

(393)
파이썬 중급 - 6. 고위 함수(Higher Order Function), 클로저(Closure) 기본 클로저 심화 클로저 개념 제대로 알기 지난 글에서 다뤘던 클로저에 대해서 제대로 알아본다. 외부에서 호출된 함수의 변수값이나 상태를 복사 후 저장하는 것이 클로저의 개념이였다. 이렇게 값을 저장해놓고 나중에 접근할 수 있도록 한다. 함수 내부에 다른 함수를 두어 자유 변수(Free variable)을 기억하도록 만들 수 있다. 평균값을 구하는 averager를 클로저를 이용하여 작성해본다. 처음 closure_ex1을 실행했을 때는 함수 자체가 반환되는 것을 확인할 수 있다. 그리고 나서 변수값을 넣을 때마다, 클로저 영역에 있는 series에 값이 누적되면서 결과가 출력되는 것을 확인할 수 있다. # Closure 사용 def closure_ex1(): # Free variable # 클로저 영역 se..
파이썬 중급 - 5. 고위 함수(Higher Order Function), 클로저(Closure) 기본 파이썬 함수 특징 런타임 초기화 변수 할당 가능 함수 인수 전달 가능 함수 결과 반환 가능(return) 함수는 클래스가 갖는 매직메서드도 갖고 있다. 함수나 클래스에 포함된 함수 목록을 조회하는 dir 함수를 통해서 클래스 부분은 제외하고 함수 부분에만 있는 함수 목록을 확인해볼 수 있다. 강의에서는 factorial 함수를 예시로 들면서 설명한다. 다음 내용에서 배울 closure, call 등이 있는 것을 볼 수 있다. def factorial(n): '''Factorial Function n: int''' if n == 1: return 1 else: return n * factorial(n-1) class A: pass print(factorial(5)) print(factorial.__doc_..
파이썬 중급 - 4. 해시테이블(Dictionary), Set Dictionary 파이썬은 기본적으로 dict형을 제공하며, 해시 테이블 자료구조로 구현되어있기 때문에 따로 해시 테이블을 구현할 필요가 없다. 아래 명령어로 출력해보면 파이썬의 코드 자체가 dict형태로 구현된 것을 볼 수 있다. print(__builtins__.__dict__) # {'__name__': 'builtins', '__doc__': "Built-in functions, exceptions, and other objects.\\n\\nNoteworthy: None is the `nil' object; Ellipsis r..... 각 객체의 고유한 key값인 hash값은 hash() 함수로 확인할 수 있다. 다만 mutable한 자료형은 변경이 가능하므로 hash값을 확인할 수 없다. t..
파이썬 중급 - 3. 시퀀스, 제너레이터, sorted, unpacking, immutable 등 시퀀스 시퀀스 기본 https://wikidocs.net/84391 파이썬에는 3가지 시퀀스 자료형이 있다. 문자열 : 문자열(string) ‘Hello’는 문자(character)들의 시퀀스이다. 리스트 : [1, 4, 5] 튜플 : (’GOOD’, 100, 121.12) 모든 시퀀스는 순서가 유지되고, 정수로 인덱싱하며 길이가 있다. 자료형 구분 정리 컨테이너와 플랫 컨테이너(container): 서로 다른 자료형을 하나의 컬렉션에 담을 수 있는 것([list, tuple, collections.deque]) 플랫(Flat): 한 개의 자료형만 담을 수 있는 것([str, bytes, bytearray, array.array, memoryview]) 가변 vs 불변형 가변형(list, bytearra..
파이썬 중급 - 2. 매직 메서드, namedtuple 매직 메서드 기본 원리 n = 10 n + 100 이나, n.add(100)은 같은 결과를 낸다. 왜냐하면 type(n) == class ‘int’ 인데, int 내부의 add 메서드를 + 로 래핑해놓은 것이기 때문이다. 이것은 다른 의미로, add 메서드를 override하면 +의 연산 로직을 정의할 수 있다는 것이다. 아래 예시처럼 특정 인스턴스를 더했을 때, 각 인스턴스가 갖는 price값을 더해서 return하도록 만들어줄 수 있다. class Fruit: def __init__(self, name, price): self._name = name self._price = price def __str__(self): return 'Fruit Class Info : {} , {}'.format(sel..
파이썬 중급 - 1. 클래스와 메서드 1. 클래스 클래스를 사용하는 이유는 같은 변수나 메서드를 반복해서 작성할 필요없이 하나의 객체로 만들어서 다른 객체와의 상호작용을 편리하게 하기 위함이다. class Car(): def __init__(self, company, details): self._company = company self._details = details def __str__(self): return 'str : {} - {}'.format(self._company, self._details) def __repr__(self): return 'repr : {} - {}'.format(self._company, self._details) car1 = Car('Ferrari', {'color' : 'White', 'horsepow..
[작성중] Django 프로젝트 초기 에러 모음 1. ViewSet 관련 .as_view() actions가 .as_view() 괄호 안에 dict 형태로 반드시 정의되어야 한다. 아래처럼 작성해보자. all_view = { 'get': 'list', 'post': 'create', 'patch': 'update', 'delete': 'destroy' } urlpatterns = [ path(r"/ingredients/", IngredientsViewSet.as_view(all_view), name='ingredients') ]
Python 라이브러리 실행 에러 : Windows 환경에서 pip install 정확히 하기(black, isort 실행 문제) 1. 문제상황 windows에서 pip를 통해 설치했던 라이브러리가 제대로 동작하지 않는 문제가 있었다. 예를 들어 파이썬 코드나 파일의 정렬을 맞춰주는 black, isort 라이브러리를 'pip install' 명령어를 통해서 설치했었는데, 아래 사진처럼 Pycharm이 실행파일의 경로를 제대로 인식하지 못하는 문제가 있었다. File Watcher에서 설정하는 'black' 라이브러리의 실행 파일 경로를 지정해주는 "Program" 부분에서 black 라이브러리 실행 파일을 제대로 인식하지 못하고 있었다. Check 만약 sudo 명령어에 대해 모르거나 Windows에 설치가 되어있지 않은 상황이라면, 아래 글의 내용을 참조하여 설정을 따로 해주어야한다! https://whitepro.tistory..