목록전체 글 (67)
The Boxer
python에서 모든 자료형은 객체로 저장한다. a = 1 이라 함은 java나 c 처럼 1이라는 값이 들어가는게 아니라 1이라는 값을 가진 integer 객체가 들어가는 것 mutable 실행 단계에서 객체 내부의 값을 수정할 수 있는 객체 list, set, dictionary 등이 mutable 객체에 속함 foo = [ 1,2 ] print(id(foo)) foo.append(3) print(id(foo)) > 4337981376 4337981376 위 경우에서 foo라는 list에 하나의 아이템을 추가해면 객체 내부의 값이 변하지만, foo가 참조하는 객체는 동일하다 copy foo = [ 1,2 ] bar = foo foo.append(3) print(foo) print(bar) >..
python에서는 메모리 효율을 높이기 위해 object interning이란 기법을 사용한다 object interning: python에서 immutable한 객체에 한해 동일한 값을 하나만을 메모리공간에 저장하여 효율적으로 메모리를 관리하는 방식 string의 경우 >>> a = "hello" >>> b = "hello" >>> a is b True a와 b는 같은 값이지만 다른 변수에 할당되었으므로 다른 reference를 참조하고 있는 것으로 봐야한다. 하지만, object interning에 의해 "hello"라는 값은 하나의 메모리 공간에 저장되고 a와 b는 해당 메모리 공간을 참조한다. >>> id(a) 4300925552 >>> id(b) 4300925552 다만 다음과 같이 특수 문자나..
python 3.7 부터 추가된 모듈 python에서 class를 통해 데이터를 저장하면 type 안전하게 데이터를 저장할 수 있음 data를 class로 저장하거나 비교, 출력하는 기능을 편하게 해주는 모듈 dataclass를 사용하지 않은 경우 데이터 저장 class Foo: def __init__(self, id: int, name: str, admin: bool): self.id = id self.name = name self.admin = admin 각 데이터를 저장하는데만 변수가 3번이 사용되어 데이터를 저장하기 위해서 너무 많은 코드가 필요하다 변수 갯수가 많아지면 더욱 많은 작업이 필요하며, 휴먼에러가 발생하기도 쉽다. 동등 비교 일반적인 class에서 동등 비교를 위해선 __eq__()를..
instance 변수 각 instance 마다 갖고 있는 독립된 변수 클래스로 부터 몇 개의 인스턴스를 만들어도 각 인스턴스의 값은 독립적이다. python에서 self 예약어를 사용하여 접근 클래스 인스턴스가 생성되는 순간 메모리에 적재되며, 인스턴스가 생성되기 이전에 접근 불가 class Foo: def __init__(self): self.a = 1 접근 범위 인스턴스의 메서드, 클래스의 생성자, 소멸자 등에서 접근 가능 class Foo: def __init__(self): self.foo = "foo" def __del__(self): del self.foo def print(self): print(self.foo) > "foo" class 변수 class 자체에서 갖고 있으며, ..
fastapi는 어플리케이션을 실행하는 시점에 swagger 페이지를 기본으로 생성해준다. controller를 등록하면 해당 endpoint에 대한 spec을 fastapi에서 자동으로 swagger 페이지에 등록해주며, 다양한 설정 또한 가능하다. 다만, swagger 페이지 자체를 fastapi에서 관리하여 커스터마이징이 어렵다. swagger 페이지에 http 기본 인증을 추가하는 방법을 알아본다. 1. 기본 인증을 적용한 endpoint 생성 fastapi에서 http basic auth를 위한 HTTPBasic, HTTPBasicCredentials 라이브러리가 있다. 두 라이브러리를 사용하여 기본 인증 구현 from fastapi.security import HTTPBasic, HTTPBas..