반응형

Python tech/고급 파이썬 공부 17

[클린 아키텍처] SW Architecture와 Object Oriented 개요

이 포스팅은 도서출판인사이트의 "Clean Architecture" 내용을 참조하였습니다. 설계Design / 아키텍처 Architecture 아키텍처 Low level 세부사항과 분리된, High level의 무언가를 가르킬 때 사용 설계 Low level의 구조 또는 결정사항을 의미할 때 사용 But 아키텍처와 설계의 사소한 차이는 무시할 수 있는 수준으로 혼용하여 사용해도 큰 문제가 없음 Why? 어차피 High level과 Low level은 유기적으로 연결되어 있을 뿐더러 둘의 경계가 뚜렷하지 않고 결국 High level에서 Low level로 향하는 의사결정의 연속성만이 존재할 뿐 이상적인 SW 아키텍처의 목표? 한 마디로 요약하자면 "SW Architecture의 목표는 필요한 무언가를 만..

Python class 속성 대신 프로퍼티를 사용해보자

해당 포스팅은 [클린코드, 이제는 파이썬이다] 저서의 일부입니다. 프로퍼티를 사용하면 객체의 속성을 읽거나 수정, 삭제할 때마다 몇몇 특정 코드를 실행해서 객체가 유효하지 않은 상태에 빠지지 않게 할 수 있다. 다른 언어에서는 흔히 getter, setter로 부르는 경우가 많다. 파이썬 또한 비슷하긴 하다. 프로퍼티 Property 속성 Attribute을 읽고 바꾸고 삭제하는 방법을 조절할 수 있도록 특별히 지정된 getter, setter, deleter 메서드를 가진 속성이다. 예를 들어, 정수값만 가져야하는 경우에 문자열을 할당한다면 버그가 발생해야 한다. 프로퍼티는 setter 메서드를 호출함으로써, 유효하지 않은 값 설정을 수정하거나 적어도 조기에 감지하는 코드를 실행한다. 아래는 일반 속성..

Python class 상속을 통해 코드 복제를 방지하자

해당 포스팅은 [클린코드, 이제는 파이썬이다] 저서의 일부입니다. Class 상속을 사용하면 불필요한 코드 복제를 방지할 수 있다. 하지만 상속을 남용하면 코드가 너무 얽혀서 유지보수성을 해치게 된다. 적절한 상속 사용 방법에 대해 알아보자. 상속의 작동 방식 상속은 부모 - 자식 관계이며 is a 관계라고 표현한다 부모 -> 자식 순서이며 부모 > 자식 관계이다. 따라서 부모가 가진 메서드를 자식 클래스에서 활용할 수 있고 수정할 수 있다. 하지만 그 반대는 그렇지 않다. 메소드 오버라이드 Method Override 메서드 오버라이드는 부모 클래스의 특정 메서드를 자식 클래스에서 재정의 할 수 있는 기능이다. 단, 두 메서드 이름은 같아야 한다. class Parent: def saySomething..

파이썬 주석/독스트링에 대하여

오픈소스를 분석하다보면 잘 작성된 주석과 독스트링에 고마움을 느끼곤 한다. 잘 설명된 주석과 독스트링이 없었다면, 오픈소스를 분석하는 것에 더 많은 시간을 쏟아야 했을 것이다. 이를 교훈삼아 나도 오픈소스를 개발할 때면, 주석과 독스트링 작성에 더 신경쓰게 되었던 것 같다. 해당 포스팅은 [클린코드, 이제는 파이썬이다] 저서의 일부입니다. 주석 Comment 주석은 다음과 같이 나타낼 수 있다. # comment ''' This is several rows comment. we can explain more '''주석의 특징 코드 행 끝(인라인 주석) 보다는 새로운 행에 독자적으로 작성할 것 적절한 대문자를 포함한 하나의 문장으로 작성할 것 코드와 마찬가지로 행..

파이써닉한 함수 만들기

함수 또한 파이썬스럽게 만들면 좋다. 함수 작성은 프로그래밍의 가장 중요한 부분 중 하나이기 때문에 규칙을 잘 준수하고, 사용하기 쉬운 함수를 만드는 것이 중요하다. . . 해당 포스팅은 [클린코드, 이제는 파이썬이다] 저서의 일부입니다. 함수명 함수는 특정 동작을 수행하기 때문에 대부분 '동사'가 들어간다. 명사도 대부분 들어가지만, 특정 모듈에서는 동사만 존재하기도 한다. webbrowser 모듈에서 open() 함수는 당연히 웹브라우저를 열어주겠다는 의미이다. 짧고 단순한 이름보단 길지만 무슨 기능인지 알 수 있는 함수명이 좋다. 당연히 open, min, random, list 등 내장 함수와 중복되는 함수명을 사용하는건 옳지 않다. 함수 크기의 트래이드 오프 함수는 가능한 짧으면 ..

파이썬 내부 동작을 알아보자

파이썬 기초 문법을 다 익혔다면 파이썬 내부 동작하는 구조와 파이썬만의 독특한 특징을 이해할 필요가 있다. . . 해당 포스팅은 [클린코드, 이제는 파이썬이다] 저서의 일부입니다. 256 is 256 == True but 257 is 257 == False 아주 기이한 현상이다. 파이썬은 value 비교를 == 연산자를 통해, id 비교를 is 연산자를 통해 한다. 물론 id()를 통해 value 비교로 == 연산자를 활용하면 id 비교가 가능하다. 파이썬은 모든 프로그램이 시작할 때 자주 쓰이는 정수 리터럴 객체를 미리 생성한다. -5 부터 256까지가 그 범위이다. CPython 인터프린터가 자동으로 -5에서 256까지의 객체를 미리 생성하고 시작한다. 그래서 다음과 같은 결과가 나오기도 한다. >>..

자주 실수하는 파이썬의 함정들

파이썬의 특징이 있는만큼 장점도 있지만, 그로 인해 생기는 문제도 많다. 필자도 이번 포스팅에 서술하는 문제들을 경험한 적이 많으며 많은 디버깅 경험을 통해 그러지 않아야겠다고 다짐한 반면 이 책과 포스팅을 읽은 여러분들은 그러지말도록 하자 . 해당 포스팅은 [클린코드, 이제는 파이썬이다] 저서의 일부입니다. for loop 도중 리스트 item 추가/삭제 금지, 수정은 OK 리스트는 가변 객체이다. for loop 동작 도중 이를 추가 또는 삭제하게 된다면, 손쉽게 오류를 일으킬 수 있다. 추가의 오류 >>> foo = [1,2,3,4] >>> for i in foo: ... if i < 10: ... foo.append(i) 위 코드는 리스트에 10보다 작은 값을 하나 더 추가하려는 의도로 보인다. ..

파이썬 용어/개념 정리부터 확실하게 #2

1편에서 가비지 컬렉션, 리터럴, 객체, 아이디 등에 대해 알아보았다. https://tech-diary.tistory.com/55 파이썬 용어/개념 정리부터 확실하게 #1 모든건 기초가 튼튼해야 한다. 개발자들끼리 의사소통할 때 용어에 대한 이해가 부족하면 말릴수밖에 없다 누군가가 물어볼 때, 좀 안다 싶은데 용어 설명을 못하면 난감하기도 하다 용어에 대 tech-diary.tistory.com 모든건 기초가 튼튼해야 한다. 개발자들끼리 의사소통할 때 용어에 대한 이해가 부족하면 말릴수밖에 없다 누군가가 물어볼 때, 좀 안다 싶은데 용어 설명을 못하면 난감하기도 하다 용어에 대 tech-diary.tistory.com](https://tech-diary.tistory.com/55) 2편도 더 알아가보자..

파이썬 용어/개념 정리부터 확실하게 #1

모든건 기초가 튼튼해야 한다. 개발자들끼리 의사소통할 때 용어에 대한 이해가 부족하면 말릴수밖에 없다 누군가가 물어볼 때, 좀 안다 싶은데 용어 설명을 못하면 난감하기도 하다 용어에 대한 확실한 정리, 그리고 개념에 대한 확실한 이해가 필요하다 이제 알아보자 . 해당 포스팅은 [클린코드, 이제는 파이썬이다] 저서의 일부입니다. 이번 포스팅에서는 가비지 컬렉션, 리터럴, 키워드, 객체, 아이디에 대해 다룹니다. 가비지 컬렉션 (Garbage Collection) 유명 유니콘 기업에서 면접을 볼 때 들어왔던 기술 질문중 하나다. 사실 그 전까진 이런 개념이 있는 줄도 몰랐다. 가비지 컬렉션 : 파이썬 내부에서 메모리 할당과 해제를 자동으로 해주는 메모리 관리 기법 초기 프로그래밍에서는 메모리를 프로그래머가 ..

파이썬다운 코드란? (파이써닉하게 코딩하기)

수많은 프로그래밍 언어는 저마다 장단점이 있다. 파이썬은 가독성이 쉽고 뭐 내장모듈이 많고 어쩌고... 이렇게들 많이 말하곤 한다. 각 프로그래밍 언어의 강점을 잘 살리고, 약점을 커버할 수 있도록 설계하는 것이 바람직하다고 생각한다. 그렇다면, 파이썬답게(파이써닉하게) 코드를 작성하는 방법은 무엇일까? . 해당 포스팅은 [클린코드, 이제는 파이썬이다] 저서의 일부입니다. 파이썬의 선 (Zen of Python) 파이썬 언어 설계와 프로그램을 위한 20가지 지침이라고 한다. 아래처럼 import this 를 불러오면 볼 수 있다. 이중 몇 가지 재미난 부분에 대해 알아보자 아름다운 것이 흉한거보다 낫다 당연한 사실이다. 파이썬은 중괄호가 사라지고 간결하게 코드를 작성하게 거의 강제하면서, 가독성을 높이고..