파이썬 30

[Python] 간단하게 정리한 클래스와 상속

프로그래밍과 언어를 배우고 그 안으로 들어가다 보면 '객체 지향', '클래스' 등의 단어를 접하게 된다. 객체 지향은 말 그대로 여러 요소와 데이터 등을 객체로써 취급하고 구분하고 사용하는 것을 지향한다는 의미이다. 내가 이해한 바로는 쉽게 말해 코드 속 여러 요소들을 명확한 레고 블록으로 만들고, 각각의 블록을 잘 쌓아서 견고하게 코드를 완성해나가는 것이다. 그리고 레고 블록을 선명하게 구분되고, 안정적인 각진 모습으로 구현하는 과정 속엔 클래스가 주요하다. 1. 클래스 클래스의 구성 요소와 관련 주요 개념을 정리해보면 다음과 같다. 1) 클래스: 어떤 데이터가 있는지, 어떤 조작을 할 수 있는지, 어떤 제약 조건들이 있는지 등을 명시한 추상적인 설계도 2) 인스턴스: 클래스로 만든 실제 예시. 클래스..

[Python] 함수와 메서드의 차이

지금까지 파이썬을 공부하면서 함수(function)와 메서드(method)에 대해 정확히 구별하지 못했다. 어느 정도 둘의 개념은 파악하고 있었지만, 거의 같은 용어라고 생각하면서 공부하고, 생각하며, 기록했다. 이 글에서는 파이썬 강의 자료의 일부를 통해 정리했다. 1. 함수(function) 함수란, 특정 기능을 수행하는 코드 또는 코드의 모임이다. 아래 사진은 질리도록 봐온 대표적인 함수의 개념도이다. 대표적인 파이썬 함수로 len(), int(), str() 등의 함수가 있다. 2. 메서드(method) 반면, 메서드는 특정 자료에 대해 특정 기능을 하는 코드를 의미한다. 여기서 함수와 구별되는 점은 '특정 자료 형태'에서 구현된다는 점이다. 예를 들어 아래 코드처럼 리스트 자료형에 적용할 수 있..

[Python] 변수 이름 짓는 방법

8월 3일부터 '스타트업 청년인재 이어드림' 프로젝트 교육을 본격적으로 받기 시작했다. 우선, 교육 내용은 첫 시간이기 때문에 파이썬에 대한 아주 기초적인 부분부터 배웠다. 지금까지 파이썬이 다른 언어보단 익숙하고, 자주 사용했기 때문에 크게 어려움은 없었다. 하지만 변수 이름을 지으면서 간혹 헷갈리거나 궁금한 부분이 있었는데, 이 강의에서 확실하게 정리해준 강의 자료가 있어서 블로그에 남긴다. 변수 이름 짓는 방법 1. 변수 이름이 숫자로 시작하면 안 된다. 2. 숫자로만 구성된 변수 이름 금지 3. 파이썬 문법에서 사용되는 예약어( ex) if, for, while 등 ) 사용 금지 4. 공백 문자( ), 연산자(+, -, %, * 등) 사용 금지

[Python] 다차원 리스트 생성 시 유의할 점

최근 파이썬을 통해 백준 알고리즘 문제를 풀이하던 중, 리스트로 2차원, 3차원 형태를 만들어야 하는 부분이 있었다. 재귀 함수를 통해 원소 하나하나씩 값을 구하고, 해당 리스트에 저장해야 했다. 나는 아래와 같은 방식으로 리스트를 생성하고, 값을 저장했다. val = [[[0] * 2] * 2] * 2 val[0][0][1] = 7 이를 프롬프트로 진행했을 때, 위와 같은 결과가 되었다. 슬라이싱을 한 적도, 값을 여러 개 지정하려던 의도도 없었는데, 마치 슬라이싱으로 값을 수정한 것처럼 각 리스트의 1번째 원소가 모조리 저장되었다. 솔직히 이전에도 종종 이런 경우가 있었고, 그때마다 결국 그냥 리스트 인덱싱이 아닌, append 함수나 딕셔너리 타입 등을 이용해서 문제를 해결했다. 그러던 중 우연히 ..

[Python] 매우 기초적인 Python 크롤링하는 법(feat. 간단한 DB 설명)

1. 크롤링이란? '크롤링'은 정의하자면 검색 엔진(네이버, 구글 등) 로봇을 통해 데이터를 수집하는 방법을 의미합니다. 흔히 개인이 포털 사이트에서 검색을 통해 확인할 수 있는 정보를 퍼오는 행위인 '스크랩핑' 또한 크롤링이라고 부르기도 합니다. 2. 크롤링 하는 법 코딩을 통해 크롤링을 하기 위해선 2가지 핵심 요소가 있습니다. 첫 번째는 원하는 페이지의 HTML을 요청하는 것, 두 번째는 요청을 통해 가져온 HTML 중 필요한 데이터만을 잘 골라내는 것입니다. 이를 파이썬에서 성공적으로 진행하기 위해선 먼저 임포트(import) 해야 하는 라이브러리가 있습니다. 임포트 할 라이브러리는 requests, beautifulsoup가 있으며 다음과 같이 입력하면 임포트 할 수 있습니다. import re..

[Python] 정규표현식

정규표현식이란, 특정한 문자의 규칙을 찾고 가공하는 방법을 의미합니다. 파이썬뿐만 아니라 C, C++, 자바 등에서 표준 라이브러리로 제공하고 있다는 점에서 굉장히 널리 사용되는 표현법이기도 합니다. 1. 모듈 정규표현식 모듈의 이름은 're'입니다. 정규표현식의 메서드를 사용하기 전에 우선 정규표현식 모듈을 임포트해야 합니다. import re 2. 메서드 1) match - 해당 문자열의 가장 처음부터 원하는 패턴의 문자열을 찾는 명령입니다. 문자열을 찾은 후, group() 함수를 함께 사용해야 패턴에 해당되는 문자열이 반환됩니다. - 사용법 re.match(패턴, 패턴을 찾을 문자열) - 단, 가장 처음부터 원하는 패턴을 찾기 때문에 패턴이 문자열 중간에 있다면 찾지 못하고 오류가 발생합니다. ※..

[인공지능] 머신러닝 '비지도 학습' 알고리즘 정리

현재 공부를 시작한 단계에 불과하며, 차근차근 공부한 머신러닝 알고리즘의 방식과 특징 등을 정리해나가는 게시글이다. 기술하는 내용은 모두 Python 기반이다. - 지도 학습 알고리즘과 다르게 데이터 중에서 타깃이 없을 때 사용하는 머신러닝 알고리즘이다. 1. k-평균(k-Means) 1) 무작위로 k개의 클러스터(군집) 중심을 선택하고, 점차 가장 가까운 샘플의 중심으로 이동하는 비교적 간단한 알고리즘 2) 평균값이 클러스터의 중심에 위치하기 때문에 '클러스터 중심' 또는 '센트로이드'라고 부르기도 한다. 3) 군집된 결과는 KMeans 클래스의 labels_ 속성, 클러스터 중심은 cluster_centers_ 속성, 알고리즘이 반..

[Python] 넘파이(numpy)의 유용한 기능 정리

※ 해당 게시글은 파이썬과 인공지능을 공부하면서 주로 사용하는 기능을 정리한 내용입니다. 넘파이(numpy)는 대표적인 배열 라이브러리로, 고차원의 배열을 손쉽게 만들고 조작할 수 있습니다. numpy는 아래와 같이 임포트하고, 관용적으로 'np'라는 문자열로 줄여서 임포트합니다. 넘파이 배열의 핵심 부분은 C, C++과 같은 저수준 언어로 개발되어서 데이터가 아주 큰 경우엔 일반 파이썬 리스트로 작업하는 것보다 빠르고, 데이터 과학 분야에 알맞게 최적화되어 있습니다. import numpy as np numpy에서 주로 사용하는 함수는 다음과 같습니다. 1. array(): 리스트를 배열로 변환해주는 함수 a = [1, 2, 3, 4, 5, 6] a_array = np.array(a) 2. arange..

[인공지능] 머신러닝 '지도 학습' 알고리즘 정리

현재 공부를 시작한 단계에 불과하며, 차근차근 공부한 머신러닝 알고리즘의 방식과 특징 등을 정리해나가는 게시글이다. 기술하는 내용은 모두 Python 기반이다. - 지도 학습 알고리즘은 사용 용도와 목적에 따라 '분류'(샘플을 몇 개의 클래스 중 하나로 분류)와 '회귀'(임의의 어떤 숫자를 예측)로 나뉜다. - 대부분의 모델에는 훈련 과정에서 찾은 최적의 모델 파라미터(coef_와 intercept_)가 존재한다. 많은 머신러닝 알고리즘의 훈련 과정은 이 최적의 파라미터를 찾는 것이고, 이런 과정을 '모델 기반 학습'이라고 부른다. - k-최근접 이웃 알고리즘은 모델 파라미터가 따로 존재하지 않고, 단순히 훈련 세트를 저장하는 것이 훈련의 ..

[Python] 파이썬 스타일 가이드, PEP 8

만약 여러 파이썬 개발자들이 같이 작업을 할 때, 코드를 작성하는 스타일이 다르다면? 코드를 완성하는 문제뿐만 아니라, 각자의 스타일을 통일하는 과정에서도 시간을 빼앗기게 될 것이다. ​ 이러한 문제를 방지하기 위해 파이썬에서는 PEP 8 문서를 통해 암묵적인, 일관된 규칙을 가이드로써 제공한다. 그중 대표적인 규칙 몇 가지를 적어봤다. ​ 원본 출처: https://www.python.org/dev/peps/pep-0008/#indentation ​ 1. 들여쓰기 들여쓰기는 TAB 또는 스페이스바를 통한 공백으로 입력하는데, 스페이스바(공백) 4번으로 통일한다. ​ ​ 2. 연산자 앞뒤로 공백 넣어주기 연산자 종류 assignment (=) augmented assignment (+=, -= etc.)..