LANGUAGE/Python, Django
-
파이썬 코딩의 기술 (브렛 슬라킨)LANGUAGE/Python, Django 2024. 12. 3. 22:01
Chapter 1 파이썬답게 생각하기Better Way 3 | bytes와 str의 차이를 알아두라- 파이썬은 bytes와 str 두 가지 타입을 이용해 문자열 데이터의 시퀀스를 표현한다. bytes에는 8비트 값의 시퀀스가 들어 있고, str에는 유니코드 코드 포인트의 시퀀스가 들어 있다. - 일반적으로는 UTF-8이 시스템 디폴트 인코딩 방식이다. (도우미 함수를 이용해서 문자 시퀀스 타입을 확실히 알 수 있다.) - 유니코드 데이터를 인코딩하거나 디코딩하는 부분을 인터페이스의 가장 먼 경계 지점에 위치시켜라. (= 유니코드 샌드위치) - 이진 8비트 값과 유니코드 문자열을 파이썬에서 다룰 때 꼭 기억해야 할 두 가지 문제점이 있다.첫 번째 문제점은 bytes와 str이 똑같이 작동하는 것처럼 보이지..
-
Django - 애플리케이션 개발 방식LANGUAGE/Python, Django 2024. 12. 3. 21:58
웹 사이트를 설계할 때 가장 먼저 해야 할 일은 프로그램이 해야 할 일을 나누어서 모듈화 하는 것이다. 웹 사이트의 전체 프로그램 또는 모듈화된 단위 프로그램을 애플리케이션이라고 한다. 즉, 코딩할 대상을 애플리케이션이라고 부른다. 장고에서는 애플리케이션의 개념을 웹 서버 개발 측면에서 좀 더 구체화 한다. 웹 사이트에 대한 전체 프로그램을 프로젝트라 하고, 모듈화된 단위 프로그램을 애플리케이션이라 부른다. 즉, 애플리케이션 프로그램들이 모여서 프로젝트를 개발하는 개념이다.MVT 패턴MVC(Model-View-Controller)패턴은 데이터, 사용자 인터페이스, 데이터를 처리하는 로직을 구분해서 한 요소가 다른 요소들에 영향을 주지 않도록 설계하는 방식이다. 이런 방식으로 개발하면 디자이너는 데이터나..
-
python - generator, decoratorLANGUAGE/Python, Django 2024. 12. 3. 21:53
제너레이터generator제너레이터는 파이썬의 시퀀스를 생성하는 객체다. 제너레이터로 전체 시퀀스를 한 번에 메모리에 생성하고 정렬할 필요 없이, 잠재적으로 큰 시퀀스를 순회할 수 있다. 제너레이터는 이터레이터에 대한 데이터의 소스로 자주 사용된다. my_range() 함수는 제너레이터다(일련의 정수를 생성한다). 제너레이터는 실행될 때 함수를 실행하는 것이 아니라, 제너레이터 함수가 가진 객체를 반환한다. 제너레이터는 한번 생성해서 반환한 객체를 보관하지 않기 때문에, 이전의 코드를 실행한 후 추가한 코드를 실행하면 객체가 출력되지 않는다. 제너레이터를 순회할 때마다 마지막으로 호출된 항목을 기억하고 다음 값을 반환한다. 제너레이터는 일반 함수와 다르다. 일반 함수는 이전 호출에 대한 메모리가 없고, ..
-
python - iterator 이터레이터LANGUAGE/Python, Django 2024. 12. 3. 21:52
이터레이터(Iterator)는 값을 차례대로 꺼낼 수 있는 객체다. 파이썬에서는 이터레이터만 생성하고 값이 필요한 시점이 되었을 때 값을 만드는 방식을 사용한다. 이 행위는 데이터 생성을 뒤로 미루는 것인데 이런 방식을 지연 평가(lazy evaluation)이라고 한다. 이터레이터는 반복자라고 부르기도 한다. 출처: 코딩도장 요소가 여러 개 들어있고, 한 번에 하나씩 꺼낼 수 있는 객체를 반복 가능한 객체라고 한다. 흔히 사용하는 문자열, 리스트,딕셔너리 등이 반복 가능한 객체다. 객체가 반복 가능한지 알기 위해선 객체에 __iter__ 메서드가 있는지 확인해보면 된다.>>> dir([1,2,3])['__add__', '__class__', '__conta..
-
파이썬 객체지향 프로그래밍LANGUAGE/Python, Django 2024. 12. 3. 21:45
캡슐화주변을 둘러보면 모든 사물이 저마다 특성이 있다는 것을 알 수 있다. 그 특성을 기준으로 객체들을 분류하거나 계층을 만들 수 있다. 필자는 '사람'이라는 계층(클래스)에 속한다. 모든 사람이 같은 특성을 갖고 있지만, 그 특성의 값은 다르다. 예를 들면 키, 나이, 몸무개, 성별, 인종은 모든 사람이 가지는 특성이지만, 그 값은 사람마다 다르다. 특성 값 하나하나가 모여 '나'라는 '객체'를 완성하는 것이다. 또한 사람은 '잠자기', '숨쉬기', '먹기' 같은 행동을 할 수 있다. 이처럼 객체는 고유의 특성 값과 행동 혹은 기능으로 표현할 수 있다. 객체가 지니는 특성 값은 변수로 나타낼 수 있고 행동 혹은 기능은 함수로 표현할 수 있다. 현실 세계의 객체를 나타내려면 변수와 함수만 있으면 된다. ..
-
파이썬 함수, 메서드LANGUAGE/Python, Django 2024. 12. 3. 20:16
프로그래밍을 하다 보면 똑같은 내용을 반복해서 작성하고 있는 자신을 발견할 때가 종종 있다. 이때가 바로 함수가 필요한 때이다. 즉 반복되는 부분이 있을 경우 "반복적으로 사용되는 가치 있는 부분"을 한 뭉치로 묶어서 "어떤 입력값을 주었을 때 어떤 결괏값을 돌려준다"라는 식의 함수로 작성하는 것이 현명하다.함수를 사용하는 또 다른 이유는 자신이 만든 프로그램을 함수화하면 프로그램 흐름을 일목요연하게 볼 수 있기 때문이다. 마치 공장에서 원재료가 여러 공정을 거쳐 하나의 상품이 되는 것처럼 프로그램에서도 입력한 값이 여러 함수를 거치면서 원하는 결괏값을 내는 것을 볼 수 있다. 이렇게 되면 프로그램 흐름도 잘 파악할 수 있고 오류가 어디에서 나는지도 바로 알아차릴 수 있다. 함수를 잘 사용하고 함수를 적..
-
중급자를 위한 파이썬python 문법LANGUAGE/Python, Django 2024. 12. 2. 18:31
1. 중급자를 위한 업데이트 문법, 기본 문법 체크 Python 3.7 : • dataclasses : 이 모듈은 @dataclass 데코레이터를 제공하여 클래스를 간결하게 정의할 수 있게 한다. 매직 메서드 __init__, __repr__, __eq__ 등의 특별한 메서드를 자동으로 추가한다. 아래의 User1 클래스와 User2 클래스는 동일하다.더보기# id, name, email이 각각 3번씩 반복된다. 이런 현상을 보일러 플레이트(boiler plate)라고 한다.# print를 해도 필드값이 보이지 않아 불편하다.class User1: def __init__(self, id, name, email): self.id = id self.name = name ..
-
python 도움되는 메서드들LANGUAGE/Python, Django 2024. 12. 2. 18:28
- map() 함수더보기map은 반복연산을 수행하는 파이썬 내장함수이다. 즉 for문으로 대체가 가능하다. 보통 lambda 문법이 같이 나온다. list를 안붙일 경우 map object만 출력이 된다. 근데 list comprehension으로 대체 가능해서 딱히 안써도 된다.a = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]print(list(map(lambda x: x**2, a)))area = ["seoul,605", "busan,770", "daegu,884" "incheon,1063", "gwangju,501", "ulsan,1062"] names = list(map(lambda x: x.split(',')[0], area))areas = lis..