python 244

[Python] super - 부모 클래스 접근

개요이전에 2024.04.22-[Python] 상속과 오버라이딩에서 Python에서의 클래스 상속에 대해서 정리하면서 super 함수를 언급했었다.이번 글에서는 관련 개념을 좀 더 정리해 본다.   supersuper는 부모 또는 형제 클래스에 메서드 호출을 위임하는 프록시 객체를 반환한다. 클래스에서 재정의된 메서드를 접근할 때 유용하다.class super(type, object_or_type=None)type 매개변수에는 자식 클래스의 이름을 전달하고, object_or_type에는 프록시 객체를 반환받을 객체를 전달한다. 즉. super는 type으로 전달한 클래스의 부모 클래스에 접근한다. 참고로 Python 2까지는 type과 object_or_type을 명시적으로 지정해야 했으나 Python..

Python 2024.10.25

[Python] 함수의 매개변수 목록 확인하기

개요함수 내에서 매개변수에 대한 반복 작업을 하고 싶은데, 그러기 위해서는 매개변수 목록에 대한 정보가 먼저 있어야 한다. 이번 글에서는 Python에서 함수의 매개변수 목록을 얻는 방법을 적어둔다.  inspectPython inspect 모듈은 모듈, 클래스, 메서드, 함수 등과 같은 객체애 대한 정보를 얻을 때 유용한 함수를 제공한다. 클래스의 내용을 검사하거나, 메서드의 소스 코드를 얻거나, 함수의 인자 리스트를 추출하는 등이 포함된다.기본 Python 내장 모듈로 별도 설치 없이 바로 import 하여 사용할 수 있다.import inspect 아래에 함수의 인자 리스트를 추출할 때 사용하는 함수를 정리한다.  getfullargspecinspect.getfullargspec(func)함수의 매..

Python 2024.10.18

[Python] 예외 처리 - try / except / else / finally

개요프로그래밍을 하다 보면 수많은 오류를 직면하기 때문에 예외 처리는 거의 필수에 가까운 요소에 해당한다. 내 경우에는 보통 try - except 문을 사용해 예외가 발생한 경우에 대해서만 처리하는 상황이 대다수였는데, 최근에 예외가 발생하지 않은 경우에 실행되는 else문이 별도로 있다는 것을 알게 되었다. (Java에는 없었던 것 같다…….)그래서 이번 글에서는 Python에서의 예외 처리 흐름에 대해서 간단히 짚고 넘어간다.  try - except가장 기본적인 구문으로, try 절 내에 코드 실행 중 에러가 발생하는 상황을 처리하기 위함이다.try: raise Exceptionexcept: print("Oops! Something wrong.")except 구문에 처리할 예외를 지정하..

Python 2024.10.17

[Python] iterable와 iterator

개요평소 list나 set 등을 iterable 한 객체라고 말해왔는데, 관련 개념을 조금 더 명확하게 정리할 필요가 있어서 정리한다.  iterableiterable이란 멤버들을 순회할 수 있는 객체를 의미한다. 순회당하는 객체를 iterable 하다고 말하며, Python에서는 list, string, drictionary, tuple, set 등이 해당된다.참고로  __iter__() 함수를 가진 객체는 전부 iterable에 해당하고, 다음과 같은 코드로 객체가 iterable인지 확인할 수도 있다.from typing import Iterableprint(isinstance(list(), Iterable))print(isinstance(set(), Iterable))print(isins..

Python 2024.10.14

[Pandas] 데이터프레임 생성 시 ValueError: All arrays must be of the same length

현상다음과 같은 JSON 형식의 데이터가 있다고 하자.{ 'Singer' : 'James', 'Titles': ['a', 'b', 'c'], 'Albums' : [1, 2]}이 데이터를 1행 3열의 데이터프레임으로 생성하려고 한다. 하지만 기본적으로 리스트의 원소 수만큼의 행을 가진 데이터프레임을 만들게 끔 되어 있기 때문에 생성을 시도하면 다음과 같은 에러가 발생한다.ValueError: All arrays must be of the same length꼼수를 부려 데이터프레임을 만들어 보자.   방법데이터프레임을 생성할 때 DataFrame 생성자 말고 from_records, from_dicts과 같은 함수를 사용할 수도 있다. 이중 from_dicts 함수는 orient라는 매개변..

[Python] Template - 문자열 템플릿

개요Python에서는 f-string이라는 간편하고 강력한 방법으로 문자열 포맷팅을 제공해주고 있는데, 간혹 일부 값만 치환해야 하는 상황에서는 사용할 수 없는 경우가 있었다. python에서 기본적으로 제공하는 %-포맷팅이나 str.format 함수도 확인을 해봤는데, 아무래도 제공하지 않는 기능인 것 같다.이번 글에서는 문자열을 포맷팅하는 또 다른 방법인 Template이라는 기능을 소개하려고 한다.  TemplateTemplate은 string의 기능으로 간단한 문자열 포맷팅을 제공하는데, 여기서 말하는 간단하다는 말은 Python의 다른 내장 문자열 포맷팅 기능보다 번역하기 쉽게 만들어졌다는 의미이다. (코드 관점에서의 이야기인 듯?)string.Template은 $를 기반으로 문자열 치환을 제공..

Python 2024.10.02

[Tornado] httpclient - HTTP 요청

개요이전에 python의 requests를 사용해 http 요청하는 방법을 적어두었었는데, requests 라이브러리 외에 http 요청을 할 수 있는 방법은 여러 가지다. 이번 글에서는 Tornado의 httpclient 객체를 사용해 http 요청을 하는 방법을 적어둔다.  tornado.httpclienttornado.httpclient는 차단/비차단 HTTP 클라이언트 인터페이스다.simple_httpclient, curl_httpclient을 공유하는 공통 인터페이스를 정의하며, 사용자 애플리케이션은 적절한 구현 클래스를 직접 인스턴스화하거나 AsyncHTTPClient를 사용하여 재정의할 수 있는 구현 클래스를 선택할 수 있다. 기본적으로는 simple_httpclient를 사용한다.curl_..

Python 2024.09.30

[Python] singledispatch - Overloading 하기

개요2024.08.28-[Python] multipledispatch - Overloading 하기에서 Python에서 Overloading을 구현하는 방법에 대해서 정리했었는데, multipledispatch가 아니라 functools의 singledispatch를 이용한 방법도 존재하는 것 같아서 적어둔다.  singledispatchfunctools 라이브러리에서 제공하는 singledispatch는 함수를 인자 하나의 데이터 타입에 따라 구현이 결정되는 제네릭 함수로 변환하는 기능을 제공한다. ❓ 제네릭(Generic) 이란?하나의 값이 여러 데이터 타입을 가질 수 있는 기술에 중점을 두어 재사용성을 높이는 프로그래밍 방식함수 등을 정의할 때 인자에 구애받지 않고 같은 이름의 함수를 인자 타입에 ..

Python 2024.09.12

[Python] multipledispatch - Overloading 하기

개요컴퓨터 프로그래밍에서 메서드 오버로딩(Overloading)이란, 함수 이름은 같지만 매개변수나 반환 데이터 타입을 다르게 정의하는 것을 의미한다.Python은 함수를 정의할 때 타입을 지정하기 않기 때문에 기본적으로 오버로딩을 지원하지 않는다. 하지만 multipledispatch라는 라이브러리를 사용하면 오버로딩을 적용할 수 있다고 한다. 사용 방법을 정의한다.  multipledispatchPython multipledispatch는 상속, 인스턴스 메서드, 추상 클래스, Union 타입 지원 등을 제공하는 라이브러리이다.Python 기본 라이브러리가 아니기 때문에 pip 등으로 설치해야 한다.pip install multipledispatch  모듈 임포트메서드 오버로딩을 구현할 때는 disp..

Python 2024.09.11

[Python] 덕 타이핑 (Duck Typing)

개요객체 지향 프로그래밍과 관련된 개념으로 인터페이스가 존재하는데, 확인해 보니 현재 자주 사용하고 있는 언어인 Python에서는 지원하지 않는 것 같다. 대신 덕 타이핑이라는 개념이 객체 지향 프로그래밍의 인터페이스와 같은 기능을 수행할 수 있다고 한다.이번 글에서는 덕 타이핑이라는 개념에 대해서 적어두려고 한다.   덕 타이핑만약 새가 오리처럼 걷고, 헤엄치고, 꽥꽥거리면 그 새는 오리일 것이다.If it walks like a duck, and it quacks like a duck, then it must be a duck. 위의 명제는 오리 실험(The Duck Test)의 명제로, 대상의 습관적인 특성이나 특징을 통해 대상을 식별할 수 있다는 개념을 의미한다.덕 타이핑이라는 용어는 이런 오리 ..

Python 2024.09.09