콘텐츠로 건너뛰기
Home » 스터디 » Python 101

Python 101

Python 101 – 클래스

이 글을 읽으시는 파이썬을 공부하는 여러분은 아마도 들어보셨겠지만, 파이썬은 객체 지향 언어입니다. 객체 지향 언어는 객체 지향 프로그래밍이라는 패러다임을 따르는 방식으로 설계된 언어입니다. 그리고 클래스는 어떤 객체를 정의해놓은 청사진과 같다고들 합니다. 그래서 클래스가 무엇인지를 이해하려면 먼저 객체가 무엇인지를 알아야겠네요. 위키 백과에서 객체에 대해 찾아보면 다음과 같은 설명을 찾을 수 있습니다.

컴퓨터 과학에서 객체 또는 오브젝트(object)는 클래스에서 정의한 것을 토대로 메모리에 할당된 것으로 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며, 변수, 자료 구조, 함수 또는 메소드가 될 수 있다.

여러 편집자들이 고민하여 작성한 설명이겠지만, 이 설명만 들어서는 객체가 무엇인지 알기가 어렵습니다. 사실 객체의 개념은 워낙 추상적이라 일상의 언어로 정확하게 설명하기란 어렵습니다. 그래서 대략의 어설픈 이해를 바탕으로 접근해서, 객체가 어떤 식으로 사용되고 또 어떻게 만들 수 있는지를 받아들이는 편이 좋을 듯 합니다. 사실 학문적으로 엄밀하고 정확한 이해보다는 어떻게 만들고 사용할 수 있는지를 아는 것이 더 중요하니까요.

더 보기 »Python 101 – 클래스

파이썬 추상 클래스로 Comparable 타입 선언하기

파이썬에서 타입 어노테이션을 붙일 때, 제네릭 타입에 대해서는 typing.TypeVar 를 사용하면 일반적인 타입 T를 가정하고 정의할 수 있습니다. 그런데 이러한 타입 T에 대해서 특정한 성질을 만족하게끔 하는 조건을 넣고 싶은 경우가 있습니다. 예를 들어 리스트에 대한 버블 정렬 기능을 함수로 구현한다고 하면, 인자의 타입은 list[T] 와 같이 타입 T를 원소로 하는 리스트라고 명시할 수 있는데, 이 때 정렬을 위해서는 순서나 대소를 비교할 수 있어야 하므로, 타입 T 는 x > y 와 같이 대소를 비교할 수 있는 타입이어야 합니다. 파이썬에서는… 더 보기 »파이썬 추상 클래스로 Comparable 타입 선언하기

Python 101 – 함수

프로그래밍에서 함수는 핵심적인 개념이지만, 언어나 상황마다 용어가 다르기도 하고 정의도 모호해서 “함수는 이것이다!”라고 딱 잘라 말하기는 사실 힘듭니다. 위키 백과의 정의만 찾아봐도요.

함수(function), 서브루틴(subroutine), 루틴(routine), 메서드(method), 프로시저(procedure)는 소프트웨어에서 특정 동작을 수행하는 일정 코드 부분을 의미한다.

함수는 대부분의 프로그래밍 언어에서 지원하는 기능으로, 하나의 큰 프로그램을 여러 부분으로 나누어주기 때문에 같은 함수를 여러 상황에서 여러 차례 호출할 수 있으며 일부분을 수정하기 쉽다는 장점을 가진다.

https://ko.wikipedia.org/wiki/함수_(컴퓨터_과학)

가장 넓은 의미에서 함수를 정의하자면 “1개 이상의 동작을 묶어놓은 것”이라고 할 수 있습니다. 즉 일련의 동작을 하나의 단위로 묶어두고, 원하는 만큼 여러 차례 호출하여 사용하는 것이죠. 그렇게해서 전체 코드의 양을 줄일 수 있고, 또 공통된 동작에서 어떤 변경이나 수정이 필요할 때, 소스 코드의 이곳 저곳이 아닌 한 부분만 수정하면 되기 때문에 유지 보수 관점에서도 노력을 아낄 수 있죠.

이미 우리는 파이썬에서 함수를 사용하는 법을 알고 있습니다. 어떤 문자열이나 객체의 내용을 출력하는 print() 나 사용자로부터 문자열을 입력받는 input() 과 같은 동작은 파이썬이 미리 제공하는 함수입니다. 이렇게 별다른 사전 준비 없이 바로 사용할 수 있는, 파이썬이 기본적으로 제공하는 함수를 내장함수(builtin function)라고 합니다. 우리는 내장 함수를 사용하는 것외에 우리가 원하는 동작을 함수로 만들어서 사용할 수도 있습니다. 이런 개념을 내장함수에 상대적인 개념으로 사용자 정의 함수 (user defined function)이라고 합니다.

더 보기 »Python 101 – 함수

Python 101 : 맵, 필터와 반복문

지난 글에서는 리스트 및 그와 비슷한 집합 형태의 자료형을 살펴보면서 “반복 가능”이라는 개념에 대해서 소개했다. 반복 가능하다는 특성은 꼭 리스트가 아니어도 여러 개의 값을 포함하는 집합/모임(collection)의 성질을 갖는 다양한 자료형에서 나타나는 성질이며, 이러한 특성을 갖는 객체들은 그 내부 구현에 상관없이 for 루프나 comprehension 축약 문법에 적용될 수 있다.

더 보기 »Python 101 : 맵, 필터와 반복문

Python101 : 다른 집합 유형들

지난 글에서 리스트의 특징에 대해서 언급할 때나, 리스트 축약에 대해서 이야기하면서 “연속열”이나 “반복가능”이라는 단어를 사용한 적이 있다. 사실 파이썬에 연속열이나 반복객체 혹은 반복가능객체는 이제는 거의 공식적으로 사용되는 개념이다. 리스트는 이런 “연속열”과 “반복가능”에 공통적으로 속하는 유형의 데이터 타입인 것이다. 이번 글에서는 그럼 리스트 외에 어떤 다른 집합형 데이터 타입이 있는지 알아보고 그 면면을 좀 살펴보기로 하겠다. 값의 타입 일단 값의 타입을 확인하는 방법을 알아보자. 사실 여기서 말하는 타입들은 아주 “대표적인” 파이썬 타입들이며, 사실 파이썬에는 엄청나게 많은 데이터 유형이 존재한다. (사실 어떤… 더 보기 »Python101 : 다른 집합 유형들

Python 101 : 리스트

지난 글에서 파이썬에서 사용되는 가장 기본적인 값의 유형에 대해 살펴보았다. 오늘은 리스트에 대해서 이야기해보려고 한다. 리스트는 여러 개의 값이 연속적으로 배치된 일종의 집합이다. 다른 프로그래밍 언어에서는 배열(Array)이라고 하기도 한다. 사실 배열과 다른 리스트라는 자료 구조가 별도로 존재하기는 하는데 (연결 리스트 같은 걸 들어본 적이 있을지도 모르겠다.) 파이썬의 리스트는 C의 배열과 크게 다르지 않다고 생각하면 된다.

더 보기 »Python 101 : 리스트

Python 101: 변수와 값의 유형

파이썬 초급 강좌 두 번째 시간으로 오늘은 변수와 값의 유형에 대해 살펴보고자 한다. 지난 시간에는 값을 출력해보는 방법에 대해 살펴보면서 문자열이 무엇인지 살펴보았고, 변수에 대해서도 간략하게 언급했었다. 오늘은 변수와 값에 대해서 이야기보려고 한다. 개인적으로 파이썬 기초 개념 중에서 가장 중요한 것을 이 글에서 다루게 되지 싶다.

더 보기 »Python 101: 변수와 값의 유형

Python 101 : 출력과 문자열 (1)

10년전에 작성했던 파이썬 강좌글을 틈틈히 최신 버전에 맞게 수정하고 내용을 수정/보강하여 재발행하는 글입니다. 만성적인 귀찮음 때문에 연재도 중간에 그냥 그만두었었는데, 이번에는 언제까지 해 나갈 수 있을까요? 어떤 프로그래밍 언어를 공부하든간에 거의 가장 처음 접하게 되는 것이 어떤 값을 화면에 출력해보는 것입니다. 사실 출력과 관련된 부분에 대해서도 좀 알아두어야 할 것이 많지만 다른 것들은 뒤로 미루고 오늘은 간단하게 출력만 하는 것에 대해서 살펴보고자 합니다. 왜냐하면 코드 너머에서 실제로 벌어지고 있는 일들은 우리 눈에 보이지 않기 때문에 “코드가 제대로 실행되는지”, “값은 제대로… 더 보기 »Python 101 : 출력과 문자열 (1)