본문 바로가기

programming/python

함수 매개변수 문법 정리 - python과 javascript

# 함수 매개변수 문법

 

정리 : 2018.03.04  asoe72

 

---------------------------------------



## python



### 기본 인수 값

 

인수를 넘겨주지 않아도 자신의 기본값을 취한다.

 

    def incr(a, step=1):

        return a + step

    

    >>> b = 1

    >>> b = incr(b)         # 1 증가

    >>> b

    2

    >>> b = incr(b, 10)     # 10 증가

    >>> b

    12



### 키워드 인수

 

순서가 아닌 인수 이름으로 값을 전달.

 

    def area(height, width):

        return height * width

 

    a = area(width=20, height=10)   # 200

    b = area(height='ha ', 3)       # ha ha ha 

 

키워드 인수 이전에는 순서에 의해 인수 매칭을 한다.

 

    area(20, width=5)   # ok

 

키워드 인수 이후에는 순서에 의한 인수 매칭을 할 수 없다.

 

    area(width=5, 20)   # error



### 가변 인수 리스트

 

    고정 인수를 먼저 나열한 후, 나머지를 튜플 형식으로 받는다.

 

    def varg(a, *arg)

        print a, arg

    

    >>> varg(1)

    1 ()

    >>> varg(2, 3)

    2 (3,)

    >>> varg(2, 3, 4, 5, 6)

    2 (3, 4, 5, 6)



### 정의되지 않은 키워드 인수 처리하기

 

마지막에 **kw 형식으로 기술하면 사전 형식으로 전달받는다.

 

    def f(width, height, **kw):

        print width, height

        print kw

 

    >>> f(width=10, height=5, depth=10, dimention=3)

    10 5

    { 'depth': 10, 'dimension': 3 }

 

---------------------------------------

 

## javascript

 

함수에서 정의한 형식 매개변수보다 많거나 적은 실 매개변수로 함수를 호출할 수 있다.

 

- 실 매개변수가 많으면 무시된다.

- 실 매개변수가 적으면 undefined로 입력된다.



### 기본 매개변수

 

    function test(a, b, c)

    {

        if(!b) { b = 52; }

        if(!c) { c = 273; }

 

        alert(a + ':' + b + ':' + c);

    }

 

    test(1, 2);

 

    // 1:2:273이 출력된다.

 

혹은 아래와 같이 간략화 할 수 있다.

 

    function test(a, b, c)

    {

        b = b || 52;

        c = c || 273;

 

        alert(a + ':' + b + ':' + c);

    }

 

    test(1, 2);

 

    // 1:2:273 이 출력된다.



### arguments 객체를 활용한 가변 인수

 

    function sumAll()

    {

        alert(typeof(arguments) + ' : ' + arguments.length);

    }

 

    sumAll(1, 2, 3, 4, 5, 6, 7, 8, 9);

 

    // object : 9 가 출력된다.

 

---------------------------------------

 

## 참고자료

 

- 열혈강의 Python 개정판 Ver.2 - 이강성, chap.10

- 모던 웹을 위한 JavaScript + jQuery 입문(3판)