Pythonic Code

boychaboy·2023년 6월 14일

Module (모듈)

  • 모듈 이름은 짧게 하고, 소문자를 쓴다
  • 마침표(.)나 물음표(?)와 같은 특수기호를 사용하지 않는다.
  • 모듈을 불러오는 형식
    • 좋은 예:
        import module
        x = module.function()
    • 나쁜 예:
      from module import *
      x = function()

값 무시하기

  • 언패킹 해야할 값 중 무시하고 싶은 값이 있을 때는 이중 밑줄(_ _)을 사용한다.
filename = 'foobar.txt'
basename, __, ext = filename.rpartition('.')

많은 파이썬 스타일 가이드에서는 일회용 변수에 (여기서 권장하는) 밑줄 두개(_ _)가 아닌 단일 밑줄(_)을 사용하길 권장한다. 문제는 단일 밑줄이 대체로 gettext.gettext()함수의 별칭으로 사용되며 대화영 프롬프트에서 마지막 작업 앖을 유지하는 데 사용된다는 것이다. 밑줄 두 개를 사용하면 명확하면서도 대부분의 경우 편리하며, 단일 밑줄 변수를 우연히 덮어쓰는 위험 요소가 사라진다.

참고로, string.rpartition('*') 함수는 문자열의 맨 뒤에서부터 *을 찾아서 *을 기준으로 (왼쪽, *, 오른쪽) 을 반환한다.

Extended Unpacking

a, *rest = [1,2,3]
# a=1, rest = [2,3]

a, *middle, c = [1,2,3,4]
# a=1, middle = [2,3], c = 4

Scope

변수의 scope을 찾는 순서: LEGB rule

  • local > enclosed > global > build-in 순서로 확인

Higher-order function

map(function, iterable) 함수를 사용하여 가독성을 높인다


LOWER_LIST = ["python", "python3", "python3"]
UPPER_LIST = []


def convert(data):
    return data.upper()


def main():
    print("=== print result===")
    UPPER_LIST = map(convert, LOWER_LIST) # 함수와 리스트를 매핑하여 결과를 반환하는 내장 함수
    print(LOWER_LIST)
    print(list(UPPER_LIST))


if __name__ == "__main__":
    main()

Lambda

코드 스타일

같음 확인하기

if attr: # 값이 존재하는지 확인
    print ‘attr is trutly’

if attr is True: # ‘True’인지 확인
    print ‘atrr is True

딕셔너리 요소에 접근하기

print (d.get(‘hello’, ‘default_value’))

값 무시하기

filename = ‘foobar.txt’
basename, __, ext = filename.rpartition(.) # 밑줄 두 개 사용하는 것을 권장

참고 문헌

profile
no vim no code

0개의 댓글