본문 바로가기

programming/python

[ python 친해지기 #1 ] 파이썬 기본 철학 및 권장 코드 스타일

[ python 친해지기 #1 ] 파이썬 기본 철학 및 권장 코드 스타일

 

안녕하세요 심심한 코딩쟁이입니다.

 

이번 포스팅은 파이썬 친해지기의 첫 번째 시간입니다.

 

파이썬이 처음이신 분들을 위해 파이썬의 기본적인 개념에 대해 알아보겠습니다.

 

 

 

 


기본 철학

 

1991년에 발표된 인터프리터 방식의 프로그래밍 언어.

 

파이썬의 창시자는 네덜란드의 프로그래머 "귀도 반 로섬" 이다.

 

1989년 크리스마스 주에 연구실이 닫혀있어서 심심함을 느낌 귀도가 심심풀이로 만들기 시작한 것이 파이썬이다.

 

정말 말 그대로 심심해서 만든 언어가 현재의 파이썬이 되었다고 한다.

 

능력자들은 심심할 때도 자기 능력을 잘 활용하는 걸 보면 정말 열심히 살아야겠다는 생각이 절로 든다.

 

Life is short, You need Python.
인생은 짧다. 당신에겐 파이썬이 필요하다.

 

이런 말이 있을 정도로 파이썬은 프로그램을 설계할 때 간결한 설계가 가능하게 해 준다.

 

같은 객체지향 언어인 JAVA나 C++로 같은 프로그램을 설계하려고 보면 엄두가 안나는 느낌을 받을 수 있다.

 

파이썬스러움(pythonic)이라는 개념이 생길 만큼 파이썬의 철학은 확고하다.

 

복잡하지 않고 의미가 명확하며, 코드의 축약보다는 흐름을 중시하는 것.

 

파이썬 기본 철학에 대해 자세히 나열해 두었습니다. 더보기 확인

 

더보기
아름다운 것이 추한 것보다 낫다. (Beautiful is better than ugly.)
 
명시적인 것이 암시적인 것보다 낫다. (Explicit is better than implicit.)
 
간결한 것이 복합적인 것보다 낫다. (Simple is better than complex.)
 
복합적인 것이 복잡한 것보다 낫다. (Complex is better than complicated.)
 
수평적인 것이 내포된 것보다 낫다. (Flat is better than nested.)
 
여유로운 것이 밀집한 것보다 낫다. (Sparse is better than dense.)
 
가독성은 중요하다. (Readability counts.)
 
특별한 경우들은 규칙을 어길 정도로 특별하지 않다. (Special cases aren't special enough to break the rules.)
 
허나 실용성은 순수성을 이긴다. (Although practicality beats purity.)
 
오류는 절대로 조용히 지나가지 않는다. (Errors should never pass silently.)
 
명시적으로 오류를 감추려는 의도가 아니라면. (Unless explicitly silenced.)
 
모호함을 대할 때, 이를 추측하려는 유혹을 거부하라. (In the face of ambiguity, refuse the temptation to guess.)
 
명확한, 그리고 가급적이면 유일한 하나의 방법은 항상 존재한다. (There should be one-- and preferably only one --obvious way to do it.)
 
비록 그 방법이 처음에는 명확해 보이지 않을지라도. (Although that way may not be obvious at first unless you're Dutch.)
 
지금 행동에 옮기는 것이 아예 안 하는 것보다는 낫다. (Now is better than never.)
 
비록 아예 안 하는 것이 지금 *당장* 하는 것보다 나을 때도 많지만. (Although never is often better than *right* now.)
 
구현 결과를 설명하기 쉽지 않다면, 그것은 나쁜 아이디어이다. (If the implementation is hard to explain, it's a bad idea.)
 
구현 결과를 설명하기 쉽다면, 그것은 좋은 아이디어일지도 모른다. (If the implementation is easy to explain, it may be a good idea.)
 
네임스페이스를 사용하는 것은 완전 좋은 생각이다! (Namespaces are one honking great idea -- let's do more of those!)

권장 코드 스타일

 

위에서 보았든이 파이썬에는 특유의 철학들이 존재한다.

 

이로 인해 문법에 엄격한 편인데 코드의 작동과는 별개로 가독성을 위해 권장하는 스타일 가이드가 존재한다.

 

Python 공식 문서에서 권장하는 코딩 스타일이 PEP 8 이다.

 

PEP 8 을 모두 살펴보면 좋겠지만 간단한 몇 가지만 소개해 드리겠습니다.


1. 블록 처리 규칙

 

대게 프로그래밍 언어에서는 " 중괄호 ( ) " 를 사용해 블록을 구분하지만 파이썬은 중괄호 대신 들여 쓰기를 사용합니다.

 

들여 쓰기는 스페이스(공백 문자) 4개를 권장하는데, 탭을 사용하면 사용자나 시스템 설정에 제각각 다른 개수의 공백이

 

입력될 가능성이 있기 때문에 탭보다는 스페이스 사용을 권장한다.

 

스페이스바를 4번 입력하는 행위가 귀찮아진 프로그래머들이 Pycharm이나 VSCode와 같은 편집기에 탭 키를 스페이스

 

바를 4번 입력한 것으로 하는 설정을 만들어 두었기 때문에 탭의 사용도 가능해지긴 했습니다.


2. 작명 규칙

 

변수나 클래스 이름을 마음대로 지어도 잘 작동하긴 하지만 PEP 8에서 권장하는 작명 규칙이 존재한다.

 

거의 모든 상황에서 스네이크 표기법으로 쓰고, 클래스와 예외에 대해서는 파스칼 표기법을 권장한다.

 

 

종류 표기법 예시
패키지 스네이크  
모듈 스네이크 import module_name
클래스 파스칼 class ClassName()
예외 파스칼  
함수 스네이크 def function_name()
상수 대문자+밑줄 MODULE_CONSTANT_NAME = 0
변수 스네이크 variable_name = 0
매개변수 스네이크 variable_name = 0
지역변수 스네이크 variable_name = 0
인스턴스 변수 스네이크 variable_name = 0
메서드 스네이크 method_name()

3. 문법 규칙

 

꼭 지켜야 하는 것은 아니지만 권장하는 스타일이므로 파이썬을 다룰 때 가독성을 높여줄 수 있기에 

 

파이썬을 시작하면서 권장 스타일을 몸에 익혀두는 것이 좋습니다.

 

import는 파일의 맨 위에 적고 내장 모듈, 제3자 모듈, 직접 만든 모듈 순서로 불러들이기.

 

한 줄은 79글자로 제한하기.


인스턴스 메서드의 첫 인자는 self로 쓰고, 클래스 메서드의 첫 인자는 cls로 쓰기.

 

class Dog:
    dog_count = 0
 
    def __init__(self):
        Dog.dog_count += 1
 
    @classmethod
    def print_count(cls):
        print('{0}마리 생성되었습니다.'.format(cls.dog_count))

 

할당 연산자(=)의 앞뒤로 공백 넣기.


순수 객체지향 언어

 

파이썬에는 다양한 자료형이 존재하며 아래 그림과 같다.

 

python-data-type
파이썬 자료형

 

크게 불변 객체와 가변 객체로 나뉘는데 문자열, 튜플, 바이트, 상수를 제외한 모든 객체들은 가변 객체이다.

 

즉, 값을 수정할 수 있다.

 

불변 객체의 값을 수정해야 하는 경우, 바꿀 값을 저장한 새로운 객체를 생성한 뒤 참조 위치를 변경하는 방식이다.

 

이러한 특징을 가진 파이썬은 순수 객체지향 언어라고 불린다.


여기까지 파이썬 친해지기 첫 번째 시간이었습니다.

 

파이썬이란 언어에 대해 조금씩 알아가 보는 포스팅을 앞으로 꾸준히 올릴 예정이오니

 

파이썬을 공부하실 분들에게 도움이 되었으면 좋겠습니다.

 

날씨는 춥지만 마음만은 따듯한 연말 보내시길 바랍니다.

 

감사합니다.

반응형