]인프런 이진석 강사님의 장고강의를 참고 URL Dispatcher settings.py에서 최상위 URL Conf 모듈(url접근을 제일 처음 조우하는 모듈)을 지정 #settings.py ROOT_URLCONF = 'django_inflearn_study.urls' url접근의 경우의 수에 따른 대응방식(어떤 view를 호출할 건지)을 미리 설정하여 리스트 형태로 배치 매칭이 되는 url이 다수 존재하는 경우, 처음으로 매칭되는 url에 접근 매칭되는 url rule이 없을 경우, 404 page not found 응답을 발생 Path()와 re_path() re_path()는 정규표현식을 빡시게 쓸 수 있는 반면, path()는 정규표현식 기능이 간소화되어 있다. 즉 많이 사용되는 정규표현식을 in..
module과 package개념 module과 package를 import 하는법 import하는 모듈의 탐색 방법 absolute path와 relative path __init__.py 1.module과 package란? 파이썬으로 코드를 적어내려가다보면 정말 많은 것들을 import해온다. import는 파일을 연결해서 , 현재 파일에서 연결된 파일 내부의 코드를 사용할 수 있게 된다고 이해하자! 특히 웹페이지하나 구현해보려 하면 from으로 시작되는 코드들 5-6줄은 기본이다.(vs코드는 자동import 외않되...) 습관적으로 import해오던 module과 package가 무엇인지, 어떻게 import하는것인지 한번 뜯어보려 한다. Modules 파이썬에서 모듈은 변수나 함수 혹은 클래스 등을..
==와 is 두 객체의 값을 비교할 때는 '==' 연산자를 사용해야 한다. 두 객체의 메모리 주소(id값)을 비교하려면 is를 사용해야 한다 값은 같으나 , 메모리 주소가 다를 수 있다 vs코드에서 실행시, 동일한 메모리 주소를 부여한다. vs코드안에 내부적으로 동일한 메모리를 부여하는 로직이 있는 것 같음 #값비교 a = 1000 b = 1000 print(a == b) >> True출력 print(a is b) >> False출력 정수 바인딩 파이썬의 모든 객체는 생성될때 메모리를 부여받는다 불변형 자료형은 생성이 후 새로운 값을 줄 경우(값을 새로이 할당 시켜줄 경우), 새로운 메모리 주소를 참조하게 되는 것이 기본법칙이다. 다만 정수-5~256까지에 대해서는 파이썬은 해당 값이 존재할 경우(해당 ..
자료형은 인스턴스이다! 우리가 자료형을 만들기 위해 사용하는 int나 float등은 함수가 아니라 클래스이다 따라서, int나 float등을 통해 만들어지는 모든 정수값 혹은 실수값등은 해당 클래스(int,float)의 인스턴스이다 이는 str에도 적용된다. 모든 문자열은 str클래스의 인스턴스이다 A = int(4) print(type(A)) B = "test" print(type(B)) ##출력## isinstance isinstance를 사용하여 한번 더 확인할 수 있다 isinstance는 두번째 인자로 클래스를 받아, 첫 번째 인자가 두번째 인자의 인스턴스가 맞는지 확인해준다(따라서, isinstance를 통해 메타클래스를 판별할 수도 있다!) A = 4 B = "test" print(isins..
윤상석님의 타입파이썬 강의를 들으면서 내용을 정리 이미 알고 있는 부분들도 있고 했지만.. 전체적인 흐름내에서 약간이라도 헷갈린다 싶은 부분은 모두 정리하엿음 3는 이때까지 배운 것을 바탕으로 다음을 제작함 리스트의 append와 pop처럼, 늦게 들어온 애가 먼저 빠져나가는 stack 자료구조를 클래스를 바탕으로 구현 먼저 들어온 애가 먼저 나가는(마치 대기열 같은) queue 자료구조를 클래스를 바탕으로 구현 generic을 사용함 1. 주요 포인트 단순히 코드를 따라치고 이해하는 것을 넘어서, 코드를 제작하는 흐름을 파악하는게 중요하게 느껴짐 객체지향이라는 점에 주목할 것 총 네가지의 클래스를 만듬 . Node / LinkedList(전체리스트) / Stack / Queue 각각의 클래스는 하나의 ..
윤상석님의 타입파이썬 강의를 들으면서 내용을 정리 이미 알고 있는 부분들도 있고 했지만.. 전체적인 흐름내에서 약간이라도 헷갈린다 싶은 부분은 모두 정리하엿음 2는 파이썬에서의 타이핑에 대하여 다룸. 세부내용은 다음과 같음 Type Hints Type Checking mypy, pyright type alias generic Type Hints 변수나, 함수의 인자로 어떤 자료형이 들어와야 할지를 말해줄 수 있는 기능 #타입힌트 예시 int_var: int = 88 float_var: float = 88.9 bool_var: bool = True str_var: str = "hello_world" # List,tuple,dict는 이렇게 import를 따로 해줘야 함. 없으면 에러 from typing ..
윤상석님의 타입파이썬 강의를 들으면서 내용을 정리 이미 알고 있는 부분들도 있고 했지만.. 전체적인 흐름내에서 약간이라도 헷갈린다 싶은 부분은 모두 정리하엿음 (1-3)는 캡슐화(encapsulation)에 관하여 다룸. 세부적으로는 public / protected / private 변수 Property Public / Protected / Private 그냥 변수(self.name) : public 변수. 접근 및 수정을 해도 상관없는 일반적인 변수 _변수(self._age) : protected 변수. 접근 및 수정이 가능하나 건드리지 않는 것이 암묵적인 룰 __변수()self.__code) : private변수 파이썬 내부적으로 , 해당 변수의 이름을 바꿔 접근 및 수정이 바로 할 수 없도록 함 ..
윤상석님의 타입파이썬 강의를 들으면서 내용을 정리 이미 알고 있는 부분들도 있고 했지만.. 전체적인 흐름내에서 약간이라도 헷갈린다 싶은 부분은 모두 정리하엿음 (1-2)는 상속(inheritance)에 관하여 다룸 클래스 상속의 특징 1)상속시, 부모 클래스가 갖는 모든 메서드와 속성은 기본적으로 자식 클래스에 전부 상속된다. 즉, 별다른 설정을 해주지 않는다면, 자식클래스는 부모클래스의 모든 메소드와 속성을 동일하게 갖는다. 2)자식 클래스에서 별도의 메서드나 속성을 추가할 수 있다. 클래스메소드나 스테틱 메소드도 당연히 추가가능 3)메서드 오버라이딩 부모클래스의 메서드를 동일한 이름으로 재설정하면 덮어 씌워짐 4)super()를 활용하여 부모 클래스를 가져올 수 있음. 인스턴스를 통해 인스턴스 메소드..
윤상석님의 타입파이썬 강의를 들으면서 내용을 정리 이미 알고 있는 부분들도 있고 했지만.. 전체적인 흐름내에서 약간이라도 헷갈린다 싶은 부분은 모두 정리하엿음 (1)은 여러가지 길지 않은 주제에 대해서 정리하였음. 내용은 다음과 같음 데코레이터 OOP,추상화,다형성 클래스메소드 ,스테틱매소드 네임스페이스 SELF와 CLS 매직메소드 컴포지션 데코레이터 다음과 같이 감정을 나타내는 함수들이 있다고 하자 각 함수들에 저작권에 관한 메세지를 넣어줘야 하는 상황임. 즉, 모든 함수들에 대해 동일한 작업을 함수의 시작 혹은 끝에 반복적으로 해주어야 하는 상황임(이 부분을 기억할 것. 이럴때 데코레이터를 사용할 수 있음) 물론 모든 함수들에 동일한 메세지를 써줄 수 있지만, 너무 비효율적인 작업임. 따라서, 감정관..
인프런의 '프로그래밍 시작하기:파이썬(Level3)'의 내용을 따라가면서 정리 (4-1)에서는 오픈소스 패키지 배포를 목표로 다음에 관하여 차례로 다룸 나만의 패키지 작성 패키지배포-pypi 패키지배포-git 1. 나만의 패키지 작성 여러장의 이미지를 이미지를 움짤형태의 GIF로 바꿔주는 클래스를 작성 Glob을 사용해, 특정 경로에 있는 이미지파일들을 모두가져옴 PIL.image를 사용하여, 여러장의 이미지를 병합해 움짤로 만듬 import glob from PIL import Image #PIL은 pip install이 필요함 class GifCombiner: """ 여러 장의 이미지를, 순차적으로 나타나는 하나의 GIF 이미지(움짤)로 바꿔주는 클래스 """ def __init__(self,path..
인프런의 '프로그래밍 시작하기:파이썬(Level3)'의 내용을 따라가면서 정리 (3-2)에서는 다음에 관하여 다룸 descriptor 디스크립터란? __get__, __set__ , __delete__ 매직 메소드 중 한개 이상이 구현되어 있는 객체(클레스)를 의미 구현된 디스크립터는 다른 객체(보통 클래스)의 속성으로 정의될 수 있음 디스크립터로 정의된 속성을 읽거나(getter), 쓰거나(setter), 삭제(deleter)할 때 디스크립터에서 구현된 스페셜 메소드들(__get__, __set__ , __delete__)이 호출됨 한가지 주의할점은 디스크립터 내의 매직매소드들이 읽기,쓰기,삭제의 역할을 수행한다는 것이 아님. 다만 읽기, 쓰기, 삭제의 역할을 할때 자동으로 호출이 된다는 것. 우리가 ..
인프런의 '프로그래밍 시작하기:파이썬(Level3)'의 내용을 따라가면서 정리 (3-1)에서는 다음에 관하여 다룸 파이썬 메타클래스 1.메타클래스 인스턴스는 클래스를 기반으로 한다. 즉 인스턴스의 원형은 클래스이다 그런데 비슷한 원리로, 클래스 역시도 원형이되는 클래스가 있으며 이를 '메타클래스'라고 한다. 메타클래스를 잘 조작하면, 새로이 생성되는 클래스들이 어떠한 특성을 가질 수 있도록 의도를 담을 수 있음 프레임워크에 필수. ex)Django는 메타클래스가 사용되는 대표적인 예시 클래스 == 객체(object) 우리는 인스턴스가 객체이지만, 해당 객체가 어떠한 클래스에 의하여 탄생했다는 것을 전제하기 위하여 '인스턴스'라고 표현을 한다. 그런데, 인스턴스뿐 아니라 클래스들도 다른 클래스로부터 탄생된..
인프런의 '프로그래밍 시작하기:파이썬(Level3)'의 내용을 따라가면서 정리 (2-2)에서는 다음에 관하여 다룸 메소드 오버라이딩 메소드 오버로딩 1.메소드 오버라이딩 클래스가 가진 메소드들을 다른(자식) 클래스에 상속(전달)해 주는 것 상속해주는 클래스를 부모클래스 또는 슈퍼클래스라고 부름 상속받는 클래스를 자식클래스 혹은 서브클래스라고 부름 쓰는 이유? 메소드의 재정의 후 사용가능 > 다형성(다양한 방식으로 동작)과 같은 확장성 증가 가독성 증가, 오류가능성 감소, 메소드 이름 절약 메소드 오버라이딩 예제 부모클래스를 만들고, 자식클래스에 상속시켰음 (클래스의 인수로 다른 클래스를 받으면 상속이 된다) 기본적으로 모든 메소드는 그대로 상속이 되나, 동일한 이름이 자식클래스에 있을 경우 자식클래스의 ..
인프런의 '프로그래밍 시작하기:파이썬(Level3)'의 내용을 따라가면서 정리 (2-1)에서는 변수의 종류(public,protected,private), getter&setter , property에 관하여 다루어봄 언더스코어(접근지정자) / Naming mangling 파이썬의 클래스 내 변수에 대해서, 언더스코어('_')를 활용해 그 의미를 표시하는 암묵적인 규칙이 있음 이러한 변수에 대한 암묵적인 규칙을 'Naming mangling' 이라고 함 name : 언더스코어 없음. public 변수로, 외부에서 누구나 접근이 가능하고 수정도 가능함 _name : 언더스코어 한개. protected 변수로, 클래스의 상속관계 등에서 사용될 수 있음. 즉, 다른 곳에서도 사용되니까 건드리면 코딩의 흐름이 ..
인프런의 '프로그래밍 시작하기:파이썬(Level3)'의 내용을 따라가면서 정리 (1-3)에서는 파이썬의 컨텍스트 매니저를 직접 구현해봄 추가로, 예제를 보면서 에러에 대해서 헷갈리는 부분이 있어 다시 한 번 짚어 보았음.(맨 밑에 함께 기재) 1. 컨텍스트 매니저 리소스 누수(Resource leak) 컴퓨터에서 사용할 수 있는 리소스는 제한적임(당연) 파일이 계속 열려 있을 경우, 리소스가 새어나가 낭비되는 리소스 누수(resource leak)이 발생하기도 하고, 다른 프로세스에서 해당 파일을 엑세스 하지 못하기도 함 따라서 파일은 열렸으면, 종료되어야 함(당연..) 파일의 종료 그냥 close를 사용하면 당연히 파일이 닫힘 file = open('somefile','w') #파일 열기 file.wr..