파이썬

    파이썬과 객체지향 (python and class) 3 - 생성자(__init__, initializer)

    파이썬을 하다보면 __init__ 이라는 친구를 종종 만나실 수 있습니다. 많은 경우에서 class안에서 가장 처음으로 정의하는 함수 이기도 하죠. 파이썬에서 이친구는 생성자(initializer)라고 불립니다. 이 생성자는 어떨때 쓰일까요? 아래 예제를 통해 한번 살펴보겠습니다. # 자동차 class를 만들어보자. class Car: def set_car_spec(self, brand: str, model: str): self.brand = brand self.model = model def info(self): context = {'brand': self.brand, 'model': self.model} print(context) # ***여기서 self는 class 자체를 지칭한다. my_car =..

    파이썬과 객체지향 (python and class) 2

    파이썬의 class 지난 포스팅에서도 언급했다시피 class는 객체모델링의 수단입니다. 현실세계의 객체를 프로그래밍적으로 묘사하는 방법이죠. 이번 포스팅에선 학생이라는 현실 세계의 개체를 객체를 프로그래밍으로 표현해보겠습니다. 클래스를 만들 때, 두가지 관점에 유의하면 좋습니다. 상태 (인스턴스) 행위 (메서드) 좀 더 구체적으로 묘사하며 학생을 떠올려보겠습니다. 학생은 학년이 있을것이며, 학번이 있고, 전공, 학교, 키, 몸무게, 이름, 주소 등등 여러가지 상태를 갖고 있을 것입니다. 이러한 상태는 “변수”를 만들어줘서 저장을 하게 되는데 이것을 파이썬에서는 “instance variable (인스턴스)” 라고 부른다. (자바나 다른 언어에선 다른 방식으로 이런 상태를 부른다고 합니다) 그렇다면 행위엔..

    파이썬과 객체지향 (python and class) 1

    음.. 필자와 같은 비전공자 출신이 처음 프로그래밍을 접했을 때 당황하는 모먼트가 분명 몇가지 있으리라 생각한다. 혹자가 “처음 프로그래밍을 접하면서 가장 이해 하기 힘든 개념이 무엇이었나요?”라고 묻는다면, 나는 주저없이 class에 관해 얘기를 하지 않을까 싶다. 머릿속으로 이해를 해도 쉽게 생각한 부분이 이미지로 형상화가 잘되지않으며, class안에 있는 속성(instance)와 행위 (method)는 코딩을 할때마다 다시금 “이해를 하고 지금 코딩을 하는것인가?”라고 생각하게 만들었다. 간략하게 필자가 이해한 절차적 프로그래밍(aka 구조적 프로그래밍, 함수지향적 프로그래밍)를 언급, 비교하면서 이번 파이썬의 객체지향에 대해 알아보겠습니다. 절차적 프로그래밍 대표적인 언어: c하나의 기능을 다시 ..

    [python] 기본적인 탐색 알고리즘 2 - BFS

    기본적인 탐색 알고리즘 관련 내용은 이전 포스팅 참고 [python] 기본적인 탐색 알고리즘 1 - DFS 탐색 알고리즘에 대해 알아봅시다. 인공지능을 공부하면, 상당수의 개념이 상태공간에서 비롯됨을 알 수 있습니다. 이러한 상태공간을 탐색하는데에는 여러 방법이 있는데요. 그중에서도 아무 benban.tistory.com 이번 포스팅에선 너비우선탐색 Breath-First Search (BFS)에 대해 알아보는 시간을 갖겠습니다. BFS 원리 설명 위 그래프와 리스트는 BFS의 전형적인 문제해결 방법을 나타냅니다. DFS와 다른점이 있다면, 어떠한 노드를 탐색했을 때, 해당 노드의 자식 노드를 가장 우선적으로 탐색하는 방법이 아닌 오픈리스트 맨 마지막에 추가하여 가장 나중에 탐색하여 넓게 넓게 확인하며 ..

    [python] 기본적인 탐색 알고리즘 1 - DFS

    탐색 알고리즘에 대해 알아봅시다. 인공지능을 공부하면, 상당수의 개념이 상태공간에서 비롯됨을 알 수 있습니다. 이러한 상태공간을 탐색하는데에는 여러 방법이 있는데요. 그중에서도 아무런 기초 지식이 없을때 활용할 수 있는 탐색 방법중 하나인 망라적 탐색(Exhaustive Search)에 대해서 알아보도록 하겠습니다. 망라적 탐색을 수행하려면 몇 가지 기본적인 Rule을 숙지해야합니다. 이미 확인한 곳을 다시 확인해서는 안됨 (closed list로 관리) 아직 확인하지 않은 곳을 알고 있어야함 (open list로 관리) 효율적인 순서로 탐색해야함 -> 깊이우선탐색(DFS), 너비우선탐색(BFS) 활용 그 중에서도 이번에는 깊이 우선 탐색인 Depth-First Search (DFS)에 대해 알아보고, ..

    [Python] append vs extend (list의 append와 extend 차이점)

    파이썬 리스트에 새로운 원소를 추가하여 확장시킬 때 사용하는 함수인 append()와 extend()에 대해 살펴보고 두 메소드의 차이점을 알아보도록 하겠습니다. list를 생성 후 새로운 데이터를 삽입하려면 크게 세 함수를 활용하여 삽입 가능합니다. 바로 insert, append, extend인데요. 여기서는 가장 헷갈리는 append와 extend에 대해 알아보죠. 파이썬 list의 append는 list.append(x) 를 통해 리스트 맨 마지막 요소로 x를 추가할 수 있습니다. (append appends a specified object at the end of the list) 파이썬 list의 extend는 list.extend(iterable 객체) 를 통해 리스트 맨 마지막 요소로 i..

    [python] M1 mac konlpy No JVM 오류와 설치 방법

    (M1 mac konlpy 오류: No JVM shared library file (libjli.dylib) found 마주시 대처 방안 포함) M1 맥의 삶은 다이나믹합니다. tensorflow, pytorch gpu 연동 등 어느 하나 쉬운게 없죠. (물론 지금은 많은 부분에서 개선되었지만요) 이번 포스팅에서 알아볼 한국어 nlp의 대표 패키지 konlpy 설치도 호락호락 하지 않습니다. 이건 비단 맥북이 조금 더 쉽게 설치할 수 있는 경향이 있습니다. 자바 설치와 자바 경로 잡아주는 것이 윈도우에 비해 더 단순하기 때문이죠. 거두절미하고 바로 알려드리겠습니다. 자바 설치하는 경우부터 살펴보시죠. (이 포스팅을 보러 오신 분들은 No JVM shared library file (libjli.dylib..

    [python] 던더함수, 더블언더스코어 의미 (__len__), (__contains__)

    파이썬에서 시작과 끝에 언더스코어(_) 2개가 붙은 함수를 본 적 이 있을 것입니다. 밑줄 두개가 뭍은 이 함수를 더블 언더스코어(double underscore) 또는 줄여서 던더(dunder)라고 합니다. 예를 들면 __len__ 이라는 던더 함수가 있을 때, 이를 던더 렌 또는 렌 던더라고 표현합니다. 이 함수는 특별하게 쓰일 수가 있는데요. 예를 들면, 클래스에 __len__()함수를 정의하면 클래스형의 인스턴스를 len()함수에 전달할 수 있게됩니다. 클래스형 인스턴스 obj가 있다고 가정하겠습니다. 인스턴스 obj에 대한 __len()__ 함수를 호출하는 obj.__len__() 은 간단하게 len(obj)로 작성할 수 있습니다. 또 다른 예를 들어보겠습니다. 클래스에 __contains__(..