Python 한 걸음 내딛기, 4번째 포스팅입니다.
일주일에 한개씩은 꼭! 지키려고 하다보니
이번에는 분량이 많지는 않습니다.
이번주 네전따 세미나가 있을 예정이라,
오늘 이외에는 올릴 수가 없을 듯 하여! ^^
짧게나마 이렇게 포스팅합니다.
다음 포스팅은 객체지향이 되지 않을까 싶습니다! ^^;
○ 함수의 매개변수
- 함수를 호출할 때, 함수로 전달해주는 값으로 함수 처리 시에 필요한 내용을 적절하게 매개변수로 전달하여
사용할 수 있다.
- 파이썬에서는 '기본' , '키워드', '가변 리스트', '미정의 키워드' 에 대한 별도의 매개변수 전달 모드가
가능하며 각각의 사용법은 아래에서 알아보기로 한다.
○ 기본 매개변수
- 함수 호출 시, 별도의 매개변수 값을 전달하지 않을 경우에 Default 값을 갖도록 함수 선언 시에 매개변수
별로 Default 값을 지정한 것이다.
- 이 경우에 함수를 별도의 매개변수를 전달하지 않으며, Default로 설정된 값으로 함수 내부에서 사용되며
만약 매개변수에 값을 전달할 경우에는 전달한 값으로 함수 내부에서 사용된다.
함수2 예제-1 |
함수2 예제-1 결과 |
def ParameterTest1(manager="네떡지기",vendor="cisco"): print(vendor,"장비 관리 : ",manager)
ParameterTest1() ParameterTest1("고재성") ParameterTest1("고재성","Arista") |
cisco 장비 관리 : 네떡지기 cisco 장비 관리 : 고재성 Arista 장비 관리 : 고재성
|
○ 키워드 매개변수
- 함수 호출 시 전달되는 매개변수는 순서대로 함수의 선언 시에 순서와 동일하게 해당 값으로 매칭되어 전달
되지만, 이러한 순서와 상관없이 호출 시에 직접 매개변수의 키워드를 지정하여 전달할 수 있다.
함수2 예제-2 |
함수2 예제-2 결과 |
def ParameterTest2(manager,vendor): print(vendor,"장비 관리 : ",manager)
ParameterTest2(vendor="Fortinet",manager="고재성") |
Fortinet 장비 관리 : 고재성 |
○ 가변리스트 매개변수
- 함수 호출 시 전달되는 매개변수는 선언 시에 정의된 개수만큼만 전달을 할 수 있다.
하지만, 호출 시점마다 다른 개수의 매개변수를 전달해야 하는 경우가 있다. 이 경우에는 * 를 매개변수
앞에 써주게 되면 전달되는 매개변수를 튜플 형태로 전달을 받기 때문에 원하는 개수만큼 매개변수를
전달할 수 있게 된다.
함수2 예제-3 |
함수2 예제-3 결과 |
def ParameterTest3(manager, *vendors): for ven in vendors: print("Manager-",manager,":", ven)
ParameterTest3("네떡지기","Cisco","Arista") print("--------------------------") ParameterTest3("고재성","DELL","HP","Juniper","Alteon") |
Manager- 네떡지기 : Cisco Manager- 네떡지기 : Arista -------------------------- Manager- 고재성 : DELL Manager- 고재성 : HP Manager- 고재성 : Juniper Manager- 고재성 : Alteon |
함수2 예제-3 : Type확인 |
함수2 예제-3 :Type확인 결과 |
def ParameterTest3_Check(*vendors): print(type(vendors))
ParameterTest3_Check("Cisco","Arista") |
<class 'tuple'> |
○ 미정의 키워드 매개변수
- 함수 호출 시 매개변수를 Data type중의 사전형식으로 매개변수를 전달하는 방법으로, 매개변수 앞에
** 를 써주게 되면 전달되는 매개변수를 사전형식으로 전달 할 수 있게 된다.
- 가변리스트 매개변수와 마찬가지로 원하는 개수를 전달할 수 있다.
함수2 예제-4 |
def ParameterTest4(cmd,**isps): for isp in isps.keys(): print("○",isp,cmd,"Test") print(cmd,isps[isp])
ParameterTest4("ping",KT="168.126.63.1",LG="164.124.107.9",SK="210.220.163.82") |
함수2 예제-4 결과 |
○ SK ping Test ping 210.220.163.82 ○ KT ping Test ping 168.126.63.1 ○ LG ping Test ping 164.124.107.9 |