본문 바로가기

반응형

Python

(43)
[Python] Decorator 1. Decorator 란? 데코레이터란 또 다른 함수를 반환하는 함수를 의미한다. @wrapper 문법으로 다른 함수를 감싸는 방법으로 적용된다. 감싸진 함수는 wrapper 함수에 인자로 전달되고, wrapper 함수 내부에서 실행된다. 주로 함수의 내용을 직접 변경하지 않고 특정 행동이나 동작을 추가하기 위해서 사용하며, 많이 사용하는 데코레이터로는 classmethod() 와 staticmethod() 가 있다. 데코레이터는 다음과 같이 사용할 수 있으며, 예시의 두가지 표현은 동일하게 동작한다. # 함수 호출로 적용 def func(arg): statement(s) func = wrapper(func) # 데코레이터 표현식 적용 @wrapper def func(arg): statement(s) ..
[Python] module, package, library 1. module 코드를 잘 구성하기 위해서는 서로 연관이 있는 코드들을 모아서 그룹화해야한다. 모듈은 일반적으로 하나의 .py 파일에 저장된 연관된 코드 더미를 말한다. 모듈에는 함수, 클래스, 변수 또는 실행 가능한 코드 등을 선택하여 정의할 수 있다. 이렇게 저장된 모듈들을 애플리케이션에서 사용하기 위해서는 import 구문을 사용하여 해당 모듈을 가져와야 합니다. 모듈을 import 한 후에 모듈안에 있는 context 들을 module.context, module.function() 등의 문법으로 사용할 수 있다. 모듈에 있는 특정 요소만 사용하고 싶은 경우에는 from module import item 과 같은 형식으로 사용하여 모듈 전체가 아니라 해당 요소만 import 할 수 있다. # h..
[Python] copy 1. copy 파이썬에서 대입문을 통해 객체를 입력하는 경우에는 객체를 복사하는 것이 아니라 객체의 주소를 참조하도록 바인딩해준다. 만약 복사하려는 객체가 가변객체인 경우에는 복사를 통해서 복사본은 수정하고 원본은 유지하도록 하는 방식이 필요한 경우가 있다. copy 모듈은 기본적인 얕은 복사와 깊은 복사 연산을 제공해준다. 2. interfaces - copy.copy(x): 객체 x의 얕은 복사를 반환한다. - copy.deepcopy(x[. memo]): 객체 x의 깊은 복사를 반환한다. 얕은 복사와 깊은 복사의 차이는 리스트나 클래스 인스턴스와 같이 객체 내부에 또다른 객체를 포함하고 있는 경우에 나타난다. 얕은 복사는 새로운 객체를 생성하여 내부에 원본의 객체들과 연결된 참조를 저장하여 반환한다..
[Python] Magic method - 속성 관리 1. object.__getattr__(self, name) 객체의 attribute 에 접근이 실패하여 AttributeError 가 발생하면 호출된다. AttributeError 는 해당 attribute가 객체나 클래스에 존재하지 않는 경우 __getattribute__() 메서드 등에 의해 발생한다. 이때 예외처리를 통해서 특정한 속성 값을 반환할 수도 있고, 따로 처리가 없는 경우 동일하게 AttributeError를 반환하도록 할 수도 있다. 만약 정상적으로 attribute 가 반환되는 경우에는 __getattr__() 메서드가 호출되지 않는다. 만약 attribute 접근에 대한 완전한 조작을 하기 위해서는 아래의 __getattribute__() 메서드를 사용하면 된다. 2. object..
[Python] Magic method - 객체 표현 1. object.__repr__(self) 자바의 toString() 메서드와 같이 객체의 공식적인 문자열 표현을 수행하는 built-in 함수이다. 해당 객체를 인간이 이해할 수 있는 형태로 표현해주는 메서드로 repr의 결과를 통해서 같은 값을 가지는 새로운 객체를 만들 수 있는 python 표현이나, 해당 객체에 대한 설명 등을 얻을 수 있다. 보다 개발자 친화적인 결과를 반환하는데 사용된다. 만약 __str__() 이 정의되어 있지 않은 경우에 __repr__() 이 객체의 정보에 대한 표현에도 사용된다. 주로 디버깅에 사용된다. 2. object.__str__(self) str(object)나 format(), print() 등의 함수를 호출 시에 사용되는 객체의 표현법이다. 반환 타입은 st..
[Python] Magic method - 객체 생성, 초기화 1. object.__new__(cls [, ...]) __new__() 는 클래스 cls 의 새 인스턴스를 만들기 위해 호출된다. __new__()는 static method 로 첫번째 인자로는 만들려고 하는 인스턴스의 클래스가 전달된다. 나머지 인자들은 객체 생성자에 전달되는 것들이다. 일반적으로 super().__new__(cls [, ...]) 에 적절한 인자들을 전달하는 방법으로 super class 의 __new__() 를 호출해서 새 인스턴스를 만든 후, 해당 인스턴스를 반환하기 전에 수정을 진행한다. __new__() 가 객체 생성 시에 호출되고 cls 클래스의 인스턴스를 반환한다면 __init__(self [, ...]) 를 호출하는데, 이때 self 에는 새로 생성된 인스턴스가 전달되며..
[Python] urlparse 1. urllib.parse urllib.parse는 URL을 구성요소로 파싱하는 모듈이다. urllib.parse 모듈은 URL (uniform resource locator) 문자열을 addressing scheme, network location, path 등의 구성 요소로 구분하고, 이를 다시 URL 문자열로 결합하며, 상대 URL을 주어진 base URL을 기준으로 절대 경로로 변환하는 등의 기능을 수행한다. 이 모듈은 Relative Uniform Resource Locatorsd에 대한 인터넷 RFC에 맞춰 설계되었다. 지원하는 URL scheme들은 다음과 같다. - schemes: file, ftp, gopher, hdl, http, https, imap, mailto, mms, news..
[Python] Python 병렬처리 - threading (2) [threading - Thread-based parallelism] ■ Thread Objects Thread class는 개별 제어 thread에서 실행하는 활동을 나타낸다. thread가 실행할 활동은 run() 메소드를 override 하거나 callable object를 전달하여 설정할 수 있다. ( override 시에는 __init__과 run() 메소드만 override 해야한다.) 각 thread의 활동을 시작하도록 하기 위해서는 start() 메소드를 호출한다. start 메소드는 thread의 run() 메소드를 실행시킨다. thread가 활동을 시작하면 alive 상태가 되는데, run() 메소드가 종료되거나 예외 발생 시에 alive 상태가 해제된다. alive 상태는 is_ali..

반응형