본문 바로가기
프로그래밍

파이썬 코드의 가독성을 향상시키는 3가지 방법

by it-view 2022. 3. 10.
반응형

Python 스킬을 한 단계 높이십시오.

프로그래밍에서 흔히 사용되는 속담은 다음과 같다: "코드는 쓰여진 것보다 더 자주 읽힌다."

읽을 수 있는 코드를 갖는 것이 성공적인 프로젝트에 도움이 된다는 것은 말할 필요도 없다.

작업한 내용을 다시 살펴보고 수행한 단계를 명확하게 이해할 수 있습니다. 이를 통해 동료들은 자신의 작업을 이해하고 그 위에 자신만의 코드를 구축할 수 있습니다.

 

또한 디버깅 속도를 높일 수 있습니다. 코드가 깨끗하고 해석하기 쉬우면 버그나 오류를 훨씬 쉽게 해결할 수 있습니다.

PEP 8 스타일 가이드에 익숙하다면 Python으로 코드를 작성할 때 사용해야 하는 적절한 방법을 이미 알고 있을 것입니다.

그러나 지침만 고수해도 가독성의 절정을 이뤘다고 믿는다면 오산이다.

수많은 파이썬 스크립트(나 자신의 스크립트 포함)를 읽은 후, 나는 많은 사람들이 그들의 작품의 가독성을 방해하는 관행을 채택하는 경향이 있다는 것을 알게 되었다.

불행하게도, 사람들은 파이썬의 엄청난 효용성을 충분히 이용하지 않고 깔끔하지 않은 코드를 작성한다.

 

제 경험을 바탕으로 코드 가독성을 높이기 위해 사람들이 할 수 있는(하지만 하지 않는) 3가지 사항의 목록을 작성했습니다.

1. 파이썬의 원라인 활용

파이썬은 매우 생산적인 언어이다.

최소한의 코드로 많은 작업을 수행할 수 있다. 코드 가독성을 향상시키는 가장 좋은 방법 중 하나는 파이썬의 원라인을 활용하는 것이다.

원라이너로 할 수 있는 작전에 3~4줄의 코드를 투입하는 경우를 자주 봤다.

 

코드의 추가 줄을 작성하는 것은 심각한 위반은 아니지만 코드의 가독성을 감소시킵니다. 그래서 가능하면 한 줄만 쓰는 것이 가장 좋습니다.

파이썬에서 가장 좋은 한 줄 중 하나는 리스트 캄프리헨션이다. 리스트 캄프리헨션을 사용하면 코드 한 줄의 값 모음에 기반한 목록을 만들 수 있습니다.

예를 들어, 다음 코드는 1에서 99 사이의 3과 7로 나누어진 모든 숫자를 목록으로 저장합니다.

다음은 한 줄의 코드만 필요한 몇 가지 간단한 작업입니다.

한 줄에 여러 변수를 할당할 수 있습니다.

 

리스트 또는 튜플을 여러 변수로 압축 해제할 수 있습니다.

값 스왑은 한 줄로만 수행할 수도 있습니다.

외줄을 채택하는 것은 사소한 관행처럼 보일 수 있지만, 그것은 당신의 코드를 더 우아하고 쉽게 보이게 한다.

2. Python의 모듈에 의존합니다.

다른 사람들의 작품을 읽다 보면 코드 덩어리를 우연히 발견하곤 한다.

 

처음부터 함수를 만드는 것은 장점이 있지만, 파이썬이 방대한 라이브러리 모음을 통해 제공하는 엄청난 지원을 최대한 활용하는 것이 보통이다.

이렇게 하면 오류 위험을 줄이면서 작업에 필요한 코드 줄을 최소화하는 동시에 상당한 시간을 절약할 수 있습니다. 더욱이, 모듈에 익숙한 독자는 코드가 무엇을 하는지 쉽게 이해할 것이다. 그들은 당신의 방법을 해독하는데 시간을 낭비할 필요가 없습니다.

파이썬은 당신의 삶을 매우 쉽게 만들 수 있는 수많은 모듈을 제공합니다. 간결함을 위해 꾸준히 의지하게 된 것들을 다루겠습니다.

수학 연산을 다룰 때, NumPy 모듈은 당신을 도울 수 있는 귀중한 함수들을 제공합니다. 그것의 효용성은 기본적인 계산을 훨씬 넘어선다.

예를 들어, numpy가 있는 2D 배열로 목록을 변환하는 방법은 다음과 같습니다.

 

여러 번 반복해야 하는 작업을 수행할 때 반복 도구 모듈이 유용할 수 있습니다.

예를 들어, 우리는 이름 목록에서 모든 고유한 이름 쌍을 찾기 위해 반복 도구를 사용할 수 있다.

문자열을 처리할 때 regex는 이동 모듈입니다.

 

예를 들어 정규식을 사용하여 주어진 문자열에서 a와 h 사이의 모든 문자를 찾는 방법은 다음과 같습니다.

당연히 파이썬에는 당신이 이용할 수 있는 수많은 다른 모듈들이 있다.

만약 당신이 작업을 실행하기 위해 같은 평범한 코드 줄을 쓰고 있다면, 파이썬의 모듈들 중 일부를 살펴보는 것을 고려하라.

3. 기능을 설명합니다.

 

제가 파이썬에서 다른 사람이 만든 함수를 읽을 때, 그것을 처리하는 데 시간이 조금 걸리곤 합니다.

그 이유는 다음과 같습니다.

  • 코드의 목적이 직접 명시되지 않았습니다.
  • 입력 및 출력 변수 유형이 불분명합니다.
  • 함수를 호출할 때 매개 변수가 지정되지 않았습니다.

결과적으로 이러한 기능은 적절한 명명 규칙, 간격 및 기타 판독 가능한 코드 요소를 가지고 있음에도 불구하고 불분명할 수 있으며 해독하는 데 시간이 걸릴 수 있다.

게다가, 이러한 함수들은 해석하기 어렵기 때문에, 그들이 제기하는 어떤 오류도 다루기 어려울 수 있다.

 

함수가 얼마나 모호할 수 있는지 예를 들어 설명합시다.

주어진 단어에서 특정 문자를 제거하는 "remove_char" 함수를 만들고 싶다고 가정해 보자. 함수를 만든 다음 특정 텍스트에 적용하면 됩니다.

간단하죠?

자, 그 기능이 독자의 관점에서 무엇을 하는지 이해하는 데 얼마나 걸릴지 생각해보세요. 설명이나 안내가 없어서 아마 시간이 좀 걸렸을 거예요.

함수의 첫 번째 문제는 입력 매개 변수 텍스트와 chars_to_remove가 어떤 변수 유형인지에 대한 표시가 없다는 것이다. 또한 함수에 의해 반환되는 변수의 유형에 대한 표시도 없다.

 

파이썬은 동적 타입 언어이다. 자바와 같은 언어와 달리 파이썬은 변수를 할당할 때 유형을 명시적으로 명시할 필요가 없다.

비록 이것이 코딩하는 것을 더 쉽게 만들지만, 그것은 사람들이 그들의 함수에 변수 유형을 지정하지 않는 습관을 발달시킬 수 있다.

명확하게 하기 위해 함수를 만들 때 입력 및 출력 유형을 지정하는 것이 가장 좋습니다. 이를 달성하기 위한 두 가지 방법이 있습니다.

첫 번째 접근법은 유형 암시를 구현하는 것이다. 이것은 함수에 의해 반환될 변수의 유형뿐만 아니라 입력될 변수의 유형을 지정하는 것을 수반한다. 형식 암시는 필수는 아니지만 가독성을 크게 향상시킬 수 있습니다. 이것을 "remove_char" 함수에 사용합시다.

추가 정보를 통해 매개 변수 텍스트가 문자열이고 chars_to_remove가 목록임을 알 수 있습니다. 함수에서 반환되는 변수는 문자열입니다.

 

입력 및 출력 유형을 지정하는 또 다른 방법은 문서 문자열을 사용하는 것입니다. docstring은 본질적으로 파이썬에서 클래스나 함수를 설명하기 위해 사용되는 문자열이다. 익숙한 많은 기능에는 문서 문자열이 내장되어 있습니다.

문서 문자열을 사용하면 코드를 더 자세히 설명할 수 있습니다. 입력 및 출력 변수뿐만 아니라 함수에서 취한 단계와 발생 가능한 오류 등 다른 것도 설명할 수 있습니다.

여기 우리의 기능을 위해 docstring을 사용하는 한 가지 방법이 있습니다.

docstring을 사용하면 함수가 무엇을 하는지, 어떤 파라미터를 입력하는지, 어떤 변수를 반환하는지 이해할 수 있다.

문서 문자열의 좋은 예를 찾는 경우 doc 특성을 사용하여 설정된 함수의 문서 문자열을 볼 수 있습니다. 생성된 remove_char 함수에 속성을 사용할 때의 출력입니다.

 

마지막으로 함수 호출 방식에 대한 문제가 있습니다. 함수는 위치 인수를 사용합니다. 이것은 인수가 함수가 호출될 때 그들의 위치에 기반하여 그들의 매개변수에 할당된다는 것을 의미한다.

코드는 여전히 실패 없이 실행되기 때문에 이것은 심각한 오류가 아니다. 그러나 독자의 관점에서는 각 인수가 어떤 매개변수에 할당되는지 불분명할 수 있다. 실수로 모수에 잘못된 인수를 할당할 수도 있습니다.

키워드 인수를 사용하면 모든 모호성이 처리됩니다.

키워드 인수는 특히 매개 변수가 하나인 함수에서 반드시 필요한 것은 아닙니다. 그러나 2개 이상의 매개변수가 있는 함수의 경우 이들을 포함시키면 코드의 가독성이 향상된다.

 

docstring을 함수에 추가한 다음 호출할 때 키워드 인수를 통합하여 remove_char 함수를 수정합시다.

훨씬 낫네요!

결론

여기서는 PEP 8 스타일 가이드를 따르는 것 외에도 코드의 가독성을 높일 수 있는 몇 가지 방법에 대해 설명했습니다.

 

Python을 사용해 본 적이 있다면 이 글에서 설명하는 몇 가지 주제에 대해 이미 잘 알고 있을 것입니다. 하지만, 당신은 여전히 원래의 방법에 익숙하기 때문에 그것을 고수할 수 있습니다.

만약 이 묘사가 당신에게 맞는다면, 걱정하지 마세요. 당신은 혼자가 아닙니다.

저는 특정한 방식으로 코드를 작성하는 것에 익숙했기 때문에 파이썬의 많은 강력한 기능들을 무시하곤 했습니다.

가독성 측면에서 전작을 평가할 때 매우 겸손하고 객관적이어야 했습니다. 처음에는 어려웠지만, 그 노력 덕분에 읽고, 디버그하고, 공유하기 훨씬 쉬운 파이썬 코드를 쓰기 시작했습니다.

당신의 코딩 노력에 행운이 따르길 바랍니다!

 

댓글