Gidhub BE Developer

함수 인자

2018-01-30
goodGid

함수 인자

  1. 기본 인자 값
  2. 키워드 인자
  3. 가변 인자 리스트
  4. 정의되지 않은 인자 처리하기

키워드 인자

  • 인자 이름으로 값을 전달하는 방식이다.

  • 변수의 전달 순서를 맞춰 전달 + 명시적 키워드 인자 사용

>>> def connectURI(server,port):
...     str = "http://" + server + ":" + port
...     return str


>>> connectURI("test.com","8080")
'http://test.com:8080'

>>> connectURI(port="8080",server="test.com") # 명시적으로 인자 이름을 사용
'http://test.com:8080'

>>> connectURI("test.com",port="8080") # 키워드 인자 이후에는 순서에 의한 인자 매칭을 시도
'http://test.com:8080'

>>> connectURI(server="test.com","8080")
  File "<stdin>", line 1
SyntaxError: positional argument follows keyword argument
  • 기본 인자 값과 마찬가지로 일반적으로 키워드 인자일반 인자 뒤에 위치한다.

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


가변 인자 리스트

  • 함수 호출 시 인자의 개수가 정해지지 않는 가변 인자를 전달받는 방법이 있다.

  • *를 함수 인자 앞에 붙이면 정해지지 않은 수의 인자를 받겠다는 의미이다.

  • 가변 인자 리스트는 입력받은 인자를 튜플에 저장한다.

>>> def test(*args):        # 가변인자 리스트 args는 튜플 형태로 처리된다.
...     print(type(args))

>>> test(1,2)
<class 'tuple'>

정의되지 않은 인자 처리하기

  • **를 붙이면 정의되지 않은 인자를 사전 형식으로 전달받을 수 있다.

  • 파이썬의 특별한 인자 전달 방법으로, 인자를 사전 형식으로 만들어 전달할 수 있다는 것은 큰 매력이다 !

>>> def userURIBuilder(server, port, **user):
...     str = "http://" + server + ":" + port + "/?"
...     for key in user.keys():
...             str += key + "=" + user[key] + "&"
...     return str

>>> userURIBuilder("test.com", "8080", id='userid', passwd='1234')
'http://test.com:8080/?id=userid&passwd=1234&'

>>> userURIBuilder("test.com", "8080", id='userid', passwd='1234', age='20')
'http://test.com:8080/?id=userid&passwd=1234&age=20&'

  • 역시 정의되지 않은 인자를 받는 부분은 인자들 중 가장 마지막에 와야 한다.

Comments

Content