함수 인자
- 기본 인자 값
- 키워드 인자
- 가변 인자 리스트
- 정의되지 않은 인자 처리하기
키워드 인자
-
인자 이름으로 값을 전달하는 방식이다.
-
변수의 전달 순서를 맞춰 전달 + 명시적 키워드 인자 사용
>>> 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&'
- 역시 정의되지 않은 인자를 받는 부분은 인자들 중 가장 마지막에 와야 한다.