본문 바로가기

Python

(16)
[Typing] Literal, tensortype ( torch typing ) Literal python 3.8부터 추가된 기능으로 Literal typing을 통해서 특정 변수가 가질 수 있는 변수의 범위를 제한할 수 있다. 즉, 기존의 static typing의 장점을 가져오기 위해 사용하던 python의 type hinting을 넘어서 dynamic한 파이썬의 특징에 맞게 다양한 타입에 해당되더라도 사용자의 목적성에 맞게 원하는 변수들로 값을 제한할 수 있는 것이다. 물론, 파이썬이기에 Literal을 통해서 제한해둔 값의 범위를 넘어간 값을 입력하는 것도 가능하다. 즉 실제 런타임 상에서 에러가 발생하지는 않는다. 따라서, Literal로 범위를 제한해두고, 함수 내에서 조건문을 통해서 exception handling을 해주는 것이 일반적이다. from typing imp..
Python - configparser & argparser 안녕하세요 이번에는 실제 파이썬 프로그램을 실행할 때 많이 마주치게 될 configparser와 argparser에 대해서 알아보도록 하겠습니다. 그럼 시작하겠습니다. :) 개발을 하다보면 타인의 좋은 프로그램 혹은 코드를 가져다 사용하는 경우가 많다. 그런데, 해당 프로그램 혹은 코드를 그대로 가져다쓰는 것이 아니라 수정해서 사용하고 싶다면 어떻게 해야할까? 이 방법으로는 크게 두가지가 있는데 그 중 하나가 파일에 설정을 저장해두고 사용하는 configparser고, 다른 하나는 실행시점에 터미널 창에서 인자를 통해 설정을 조정해줄 수 있는 argparser다. Configparser 프로그램 개발자들은 프로그램의 설정들을 config 파일에 저장해두고, 이러한 설정 config 파일을 읽어다가 사용함..
Python - JSON & Pickle 이번에는 간단히 JSON이 뭔지에 대한 overview를 살펴보면서, 파이썬에서 어떻게 json파일을 읽고 쓸 수 있는지 정도를 간단히 다루고 Pickle에 대해서도 동일하게 다뤄보겠습니다. 그리고 마지막으로 이 두개를 비교하면서 마치도록 하겠습니다. 그럼 시작하겠습니다 :) JSON 데이터를 저장하거나, 전송할 때 많이 사용되는 경량의 데이터 교환형식이다. 정확한 의미는 javascript에서 객체를 만들 때 사용하는 표현식이다. 이러한 JSON 표현식은 사람과 기계 모두가 이해하기 쉬우며, 용량이 작기 때문에, 최근에는 JSON이 XML을 대체해서 데이터 전송등에 많이 사용한다. 즉, JSON은 데이터 포맷일 뿐, 어떠한 통신방법도 프로그래밍 문법도 아닌 단순히 데이터를 표시하는 표현방법일 뿐이다. ..
Python - Exception Handling 안녕하세요! 프로그래밍을 하면서 많은 Error Message들을 마주치시게 될 텐데료. 이번에는 Exception을 어떻게 다루는지와 Exception에 대해서 알아보겠습니다. 그럼 시작하겠습니다! :) Error 우리가 마주치는 Error Message들은 크게 2가지로 분류할 수 있다. 바로 Syntax Error(구문상의 오류)와 Exception이다. 전자는 문법상의 문제를 해결하는 것으로 에러메세지에서 잘못된 부분을 ^를 통해 잘 짚어주기에 비교적 해결하기 쉽다. 후자의 경우 코드가 문법상 문제가 없더라도 실행시 발생하는 오류들을 이야기하며, 이런 Exception이라고 해서 무조건 프로그램에 치명적이지는 않다. 지금부터는 Exception에 초점을 맞춰서 살펴보도록 하겠다. 이러한 Excep..
Python - File Handling & With Statement 안녕하세요 이번에는 파이썬에서 파일을 어떻게 다루는지에 대해서 알아보려고 합니다. 그럼 시작하겠습니다 :) File 우선 File에 대해 기본적으로 이야기해보면 위키피디아에서는 File을 컴퓨터에서 정보를 저장하는 논리적 단위라고 정의하고 있다. 개인적으로 다른 언어들에 비해서 파이썬에서 File Handling하는 것이 특히 쉽고 짧다고 생각한다. 이러한 파일은 text file과 binary file로 나뉜다. Text File은 character들의 연속으로 저장된 파일로 user가 이해할 수 있는 형태의 파일이라고 보면 될 것 같다. 우리가 작성하는 파이썬 소스코드 파일같은 .py의 확장자를 가진 파일 또한 text file일 것이다. Binary File은 0 or 1의 데이터의 연속으로 저장된..
Python - Module & Project 안녕하세요 이번에는 본격적으로 파이썬 프로그램을 작성하기 위한 Module의 개념에 대해서 알아보도록 하겠습니다. 그럼 시작하겠습니다 :) Module 먼저 Module 모듈의 개념은 단순히 소프트웨어에서만 사용되는 개념이 아니다. 간단히 아래와 같은 예시를 생각해보자. 우리는 어떤 커다란 자동차를 만들어야한다. 이 자동차의 어떤 부품은 A라는 기능을 어떤 부품은 B라는 기능을 해야한다. 이 자동차를 만들기 위해서 우리는 이러한 기능단위의 부품들로 나누어서 구성을 한다. 이러한 과정을 모듈화라고 한다. 즉, 소프트웨어를 모듈화한다는 것은 소프트웨어를 기능단위로 코드를 분리하고 추상화해서 재사용가능한 모듈이라는 단위들로 만드는 것이다. 결국 커다란 프로그램을 작은 조각들인 (기능단위) 모듈들로 나누고, 이..
Python OOP - Part2 앞선 내용에 이어 이번에는 OOP의 4원칙과 함께 OOP에 대해서 더 알아보도록 하겠습니다. 다만, 추상화의 경우 앞선 Part 1에서 이미 설명했으니 이번에는 나머지 3개( 상속, 다형성, 캡슐화 ) 에 대해서만 알아보도록 하겠습니다! 시작하겠습니다 :) 상속( Inheritance ) 우선 상속이란, 클래스간의 계층관계를 형성하는 것으로, 상속해주는 대상인 부모 클래스가 상속받는 대상인 자식 클래스에 상속을 해줄 때 모든 메소드와 속성을 그대로 상속, 전달 해주는 것이다. 그렇다면 이러한 상속을 하는 이유는 뭘까? 당연히 다양한 이유가 있겠지만, 대표적인 이유로는 부모 클래스의 속성과 메소드를 그대로 유지하고 싶거나 대부분 유지하면서 일부를 변경하고 싶기 때문이다. 즉, 상속을 통해 반복은 엄청나게 ..
Python - Magic Method 이번에는 앞선 클래스에 대해 이해를 돕기 위해서 매직메소드가 무엇인지에 대해 좀 더 알아보겠습니다. 그럼 시작하겠습니다. :) Magic Method 매직 메소드에 대해서는 앞선 시리즈에서 한번 간단히 소개했던 적이 있다. 그렇지만 정말 간단히 였기에 이번기회에 좀 더 자세히 설명해보려 한다. 이러한 __func__ 형태의 매직메소드는 대부분 파이썬에 내장되어있는 메소드로 각 역할이 있고, 존재 이유가 있다. 실제로 프로그래머가 직접 사용하기보다는 객체에 어떤 액션을 취하느냐에 따라 클래스에서 내부적으로 처리되는 함수들이다. 예를 들자면 __init__ 메소드는 생성자 역할을 하며 클래에스에 인스턴스를 찍어낼 때마다 즉시 실행되는 함수이다. 이해를 돕기 위해 몇가지 예시를 들어가며 설명해보려고 한다. _..