규도자 개발 블로그

파이썬 변수 초기화의 정석 본문

Python/Python

파이썬 변수 초기화의 정석

규도자 (gyudoza) 2021. 3. 20. 12:57

이건 내가 실무를 하면서 겪었던 실수 + 실수를 잡아준 고마운 분에 대해서 쓰는 얘기다. 파이썬으로 코딩을 하면서 이런 일이 있었다. 어떤 동작을 하는 함수를 작성해야 하는데 변수 A안에 문자열이 있으면 제대로 변환된 A를 반환하고, 없으면 False를 반환해주는, 그런 코드였다. 그래서 난 간단하게

 

def 어쩌구(A=False):

    if A:

        A = 변환된 문자열

    return A

 

이런 느낌으로 작성했다. 이 코드에서 잘못된 부분이 보이는가? 제목에서 유추할 수 있다시피 A=False가 틀렸다. A에 문자열이 담기기로 했으면 끝까지 문자열이라는 걸 밝혀야 한다. 심지어 문자열이 들어오지 않았을 때 False처리를 해야한다손 쳐도 A에 직접 False를 넣으면 안되고 빈 문자열을 넣어야 한다. 위 코드는 이런 식으로 작성됐어야 했다.

 

def 어쩌구(A=''):

혹은

def 어쩌구(A: str):

 

물론 파이썬은 동적타입 언어이기 때문에 저렇게 해도 그냥 내멋대로 자료형을 때려박으면 작동은 한다. 하지만 코드의 가독성과 직관성은 곧 그 코드를 읽어야 할 다른 동료들을 배려하는 일이기도 하고, 심지어 미래의 나를 위한 일이기도 하다. 그러니까 파이썬의 변수는 최대한 그 변수가 끝까지 가져가야할 자료형만 가질 수 있게 배려하자.

 

 

이 지적을 받고 나서 내가 정말 아무 생각 없이 막 코딩을 하고 있었구나 하는 생각이 들었고 또 지금도 이 사실은 잊지 않고 있지만 혹시나 잊을까봐, 또 모르고 실수하는 사람들이 있을까봐 기록해둔다.

해당 원리에 따라 자료형마다 변수를 초기화하는 방법은 다음과 같다.

var_integer = 0
var_float = 0.0
var_string = ''  # or ""
var_object = None
var_boolean = False

 

Comments