파이썬

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

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

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

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

    [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..

    [tensorflow] tensorflow-metal 설치 방법 (m1맥북 gpu)

    설레는 맘으로 m1 맥을 구입하고, gpu를 로컬에서 돌려보고 싶은 마음은 다들 똑같겠죠? 하지만 환경설정부터 만만치 않습니다. 익숙했던 가상환경도 뭔가 복잡하게 설치를 거쳐야하는거 같고, 특히 가상환경처럼 에러가 많이 나는 경우 골치 아파지는 경우가 많아지기 때문이죠.. 그렇기때문에 가상환경에 한해서는 대부분 보수적일 수 밖에 없을거라 생각이 됩니다. 자 차근차근 설치하는 법을 공유해드리겠습니다. 아래 스텝만 따라오시길! (스텝이 굉장히 중요합니다!!!) 가상환경 설치 (아나콘다 & miniforge) 가상환경 생성 tensorflow-deps (tensorflow-dependencies) 설치 * tensorflow-macos 설치 * tensorflow-metal 설치 * jupyter 설치 (ju..

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

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

    [python] 함수 활용 시 매개변수가 뮤터블 vs 이뮤터블 일때..

    파이썬에서는 매개변수에 실제 인수가 대입된다. 복사가 아니라는 점을 명심해야한다. 파이썬에서 인수 전달은 실제 인수인 객체에 대한 참조를 값으로 전달하여 매개변수에 대입되는 방식이다. 다른 프로그래밍 언어에서는 실제 인수의 값을 매개변수에 복사하는 값에 의한 호출(call by value)를 사용하거나, 실제 인수의 참조를 매개변수에 복사하여 매개변수가 실제 인수와 같아지는 참조에 의한 호출 (call by reference)를 사용한다. 하지만 python은 객체 참조에 의한 전달(call by object reference)를 활용하는데, 위 2가지 호출의 중간 방식으로 인지하면 된다. 따라서 함수 생성 시, 1. 인수가 immutable 일 때: 함수 안에서 매개변수의 값을 변경하면 다른 객체를 생..