2016년 1월 11일 월요일

파이썬 포멧 메소드

문자(String)을 조작하는 “% operator(조작자)” 와 format method(메소드)를 다룬다.
본문은 영문 가이드 문서의 이해를 높이기 위한 예제를 소개한다.

% 조작자를 사용한 예제이다.

class hero:
    first = '귀도'
    middle = '반'
    last = '로썸'

# 순서대로 상수를 넘겨 준다.
print("%s %s %s"  % (hero.first, hero.middle, hero.last))

format 메소드를 사용한 예제이다.

# % 조작자 처럼 입력 순서대로 처리
print("{} {} {}".format(hero.first,hero.middle,hero.last))
# 입력 순서의 구분자(integer)를 사용
print("{0} {2} {1}".format(hero.first,hero.last,hero.middle))
# 매칭한 구분자(name)를 사용
print("{first} {middle} {last}".format(first=hero.first,last=hero.last,middle=hero.middle))
# 클래스 오브젝트를 사용
print("{me.first} {me.middle} {me.last}".format(me=hero))

1, 2번의 모든 결과는 “귀도 반 로썸”으로 동일하다.
포맷 사용하면 편의성 뿐만 아니라 좀 더 복잡하고 다양한 로직을 구현할 수 있다.

format 메소드의 강력한 응용 예제이다.

class tclass:
    def __format__(self, arg):
        if arg == 'upper':
            return 'METHOD: FORMAT'
        return 'method: format'
    
    def __str__(self):
        return 'method: str'
    
    def __repr__(self):
        return 'method: repr'

c = tclass()

# 이름 구분자를 통한 처리, 특정 메소드 호출 및 포멧 인자값 활용
print('{name!r}\n{name!s}\n{name}\n{name:upper}'.format(name=c))
OUTPUT>>
method: repr
method: str
method: format
METHOD: FORMAT

# integer 형태의 구분자 처리 및 날짜 내부 포멧 메소드 활용
print(‘{0:%Y-%m-%d %H:%M:%S}\n{0:%Y}'.format(datetime.now()))
OUTPUT>>
2016-01-09 16:17:58
2016

아이가 말을 하면서 즐거움을 느끼듯이, 파이썬은 즐겁다.

References

파이썬 문자 매뉴얼
https://docs.python.org/3.5/library/string.html#grammar-token-conversion


커버 사진

0 개의 댓글:

댓글 쓰기