더북(TheBook)

흥미로운 부분은 이 부분이다.

s1, s2, s3 = sys.argv[1], sys.argv[2], sys.argv[3]

다시 말하자면, sys.argv 리스트는 다른 파이썬 리스트와 마찬가지로 인덱스가 0부터 시작된다. 하지만 프로그램 이름인 sys.argv[0]은 보통 프로그램 코드에서 사용되지 않는다. 프로그램을 실행하는 사람은 프로그램 이름을 이미 알고 있다고 가정하기 때문이다.

물론 원하는 인수가 항상 입력될 것이라고 확신할 수 없다. 만약 필요한 인수가 명시되지 않으면 대안이 필요하다. 사용자에게 해당 값을 프롬프트에서 입력받는 것과 같이 말이다.

커맨드 라인 인수의 개수가 N인 경우, 인수 리스트의 길이는 항상 N+1인 것을 기억하자. 당연하게도 프로그램 이름이 추가되었기 때문이다.

이제 앞 예시를 다음과 같이 수정해 보자.

import sys

def quad(a, b, c):
    '''Quadratic Formula function.'''

    determin = (b * b - 4 * a * c) ** .5
    x1 = (-b + determin) / (2 * a)
    x2 = (-b - determin) / (2 * a)
    return x1, x2

def main():
    '''Get argument values, convert, call quad.'''

    if len(sys.argv) > 3:
        s1, s2, s3 = sys.argv[1], sys.argv[2], sys.argv[3]
    else:
        s1 = input('Enter a: ')
        s2 = input('Enter b: ')
        s3 = input('Enter c: ')
    a, b, c = float(s1), float(s2), float(s3)
    x1, x2 = quad(a, b, c)
    print('x values: {}, {}.'.format(x1, x2))

main()
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.