
python 포스팅 시리즈에서는 파이썬 클린코드 2nd 책을 보고 공부하는 내용을 포스팅할 예정python이라는 언어를 주 언어로 다루고 있지만, 공부하면서 pytorch 와 같은 딥러닝 프레임워크들만 지금까지 공부를 해왔다. 정작 파이썬 기초와 내부 기능들을 잘 모르

클린 코드가 무엇인지 이해한다.클린 코드 작성이 왜 중요한지 이해한다.왜 포매팅과 문서화가 중요한지 이해한다.이 과정을 어떻게 자동화하는지 배운다.프로그래밍 언어의 진정한 의미는 인간의 아이디어를 컴퓨터에게 전달하기 위한 언어가 아니라 아이디어를 다른 개발자에게 전달하

어노테이션의 기본 아이디어는 코드 사용자에게 함수 인자로 어떤 값이 와야 하는지 힌트를 주자는 것이다. 어노테이션은 후에 공부할 타입힌팅(type hinting)을 활성화한다.어노테이션을 사용해 변수의 예상 타입을 지정할 수 있다. 실제로는 타입 뿐 아니라 변수를 이해

프로그래밍에서 관용구(idiom)는 특정 작업을 수행하기 위해 코드를 작성하는 특별한 방법이다. 매번 동일한 구조를 반복하고 따르는 것이 일반적이다. 관용구는 코드이므로 언어에 따라 다르다. 모든 언어는 해당 언어로 작업을 처리하는 고유한 관용구를 가지고 있다. 이 관

컴프리헨션을 사용하면 코드를 보다 간결하게 작성할 수 있고, 일반적으로 가독성도 높아지기 때문에 자주 사용하는 것을 확인할 수 잇다. 그렇지만, 수집한 데이터에 대해서 어떤 변환을 해야 하는 경우라면 오히려 코드가 더 복잡해질 수도 있다. 이런 경우에는 간단하게 for

public, private와 같은 접근 제어자를 가지는 다른 언어들과는 다르게 파이썬 객체의 모든 속성과 함수는 public이다. 즉 호출자가 객체의 속성을 호출하지 못하도록 할 방법이 없다. 엄격한 강제사항은 아니지만 파이썬에는 변수명 지정과 관련하여 몇 가지 네이

객체에 \_\_iter\_\_() 메서드를 정의하지 않았지만, 반복하기를 원하는 경우를 생각해볼 수 있다. iter() 함수는 객체에 \_\_iter\_\_() 정의 여부 확인 -> \_\_getitem\_\_ 여부 확인 -> TypeError 발생시퀀스는 \_\_le

"이 책은 파이썬을 이용한 소프트웨어 개발에 대해 다룬다. 좋은 소프트웨어는 좋은 디자인으로부터 나온다. 클린 코드에 대해서 말하면 디자인보다는 세부 구현의 모범 사례에 대해서만 생각하기 쉽다. 그러나 이러한 생각은 잘못된 생각이다. 왜냐하면 코드가 디자인이고, 디자인

관심사 분리는 책임이 다르면 컴포넌트, 계층 또는 모듈로 분리되어야 한다는 것이다. 프로그램의 각 부분은 기능의 일부분(관심사)에 대해서만 책임을 지며 나머지 부분에 대해서는 알 필요가 없다. 소프트웨어 디자인에서 관심사 분리의 목표는 파급 효과를 최소화하여 유지보수성

객체 지향 소프트웨어를 디자인할 때, 가장 일반적으로 사용되는 개념은 "상속"이다. 보통 필요한 클래스들의 계층 구조를 만들고 각 클래스가 구현해야 하는 메서드를 결정하는 것으로부터 개발을 시작한다.상속은 강력한 개념이지만 부모 클래스를 확장하여 새로운 클래스를 만들

파이썬에서의 클린 디자인의 원칙을 계속 공부를 해본다. 특히 솔리드 원칙이라는 것을 생각해보고 이를 파이썬스럽게 구현할 수 있는지 살펴본다. SOLID 원칙은 다음을 뜻한다.S : Single responsibility principle (단일 책임 원칙)O : Ope

파이썬 클린 코드 04. SOLID 원칙 LSP, 리스코프 치환 원칙 리스코프 치환 원칙은 설계의 안정성을 높이기 위해 객체가 가져야 하는 일련의 특성을 말한다. LSP의 요지는 클라이언트가 특별한 주의를 기울이지 않고도 부모 클래스를 대신하여 하위 클래스를 그대로

파이썬 클린 코드 05. 데코레이터를 사용한 코드 개선 개요 이 장에서는 데코레이터와 그 동작 원리 그리고 어떻게 구현할 수 있는지에 대해서 공부한다. 이 장의 목표는 다음과 같다. 파이썬에서 데코레이터가 동작하는 방식을 이해한다. 함수와 클래스에 적용되는 데코레

디스크립터는 파이썬의 객체지향 수준을 한 단계 더 끌어올려주는 혁신적인 기능으로 이 기능을 잘 활용하면 보다 견고하고 재사용성이 높은 추상화를 할 수 있다. 디스크립터를 구현하려면 최소 두 개의 클래스가 필요하다.1\. 클라이언트 클래스 : 디스크립터 구현의 기능을 활

지난 포스팅에서 다룬 디스크립터에 대해서 간단한 예제 코드를 살펴볼 것이다.지금부터 살펴볼 예제는 속성을 가진 일반적인 클래스인데 속성의 값이 달라질 때마다 추적하려고 한다. 처음 떠오르는 해법은 속성의 setter 메서드에서 값이 변결될 때 검사하여 리스트와 같은 내

제너레이터는 전통적인 언어와 파이썬을 구분 짓는 또 다른 특징적인 기능이다. 이 장에서는 제너레이터의 이론적 근거와 소개 배경 그리고 이를 통한 문제 해결 사례를 살펴볼 것이다. 또한 제너레이터를 사용해 이상적으로 문제를 해결하는 방법과 제너레이터를 좀 더 파이썬스럽게

코루틴의 핵심은 특정 시점에 실행을 일시 중단했다가 나중에 재시작할 수 있는 함수를 만드는 것이다. 이런 기능 덕분에 프로그램은 다른 코드를 디스패치하기 위해 기존 코드를 중지했다가, 나중에 다시 원래의 위치에서 재시작할 수 있다. 이전에 공부했던 제너레이터는 파이썬에

단위 테스트는 다른 코드의 일부분이 유효한지를 검사하는 코드이다. 일반적으로 단위 테스트를 애플리케이션의 핵심 기능을 검증하는 것이라고 생각하지만 그것은 이 책에서 정의하는 방식과 달리 단위 테스트를 보조 수단으로만 생각하는 것이다. 단위 테스트는 소프트웨어의 핵심이

pytest는 훌륭한 테스트 프레임워크로 단순히 assert구문을 사용해 조건을 검사하는 것이 가능하기 때문에 보다 자유롭게 코드를 작성할 수 있다.기본적으로 pytest에서는 assert 비교만으로 단위 테스트를 식별하고 결과를 보고하는 것이 가능하다. 또한 pyte