source : https://freepythontips.wordpress.com/2013/08/04/args-and-kwargs-in-python-explained/
에서 유용한 내용을 일부 추려서 정리함.
*args의 예시.
# -*- encoding: cp949 -*- def test_var_args(f_arg, *argv): print "first normal arg:", f_arg,", type(*argv) =",type(argv) for arg in argv: print "another arg through *argv :", arg for i in range(len(argv)): print argv[i] test_var_args('yasoob','python','eggs','test')
위 실행결과를 보면 알겠지만, 인자의 갯수를 가변적으로 변경할수 있는것 같다. 첫번째 인자 뒤의 인자들은 전부 튜플로 만들어져서 *argv에 저장된다. 그리고 저런식으로 사용이 가능하다.
**kwargs의 예시.
# -*- encoding: cp949 -*- def greet_me(**kwargs): print 'type(kwargs) =',type(kwargs) if kwargs is not None: for key, value in kwargs.iteritems(): print "%s == %s" %(key,value) greet_me(name="yasoob",age=19,height=180.0,country='korea')
실행결과를 보고 추측할 수 있는건, **형식으로 받은 인자는 사전 형식이며, 역시 *args와 마찬가지로 가변길이의 인자를 받을 수 있다.
그럼 이번엔 둘이 같이 써보자.
# -*- encoding: cp949 -*- def some_func(fargs, *args, **kwargs): print fargs for ar in args: print ar for key,value in kwargs.iteritems(): print key,'=',value some_func(10,'args1','args2','args3','args4',hoho1='2',rara='haha')
대충 사용법을 알아냈다. 연습하면서 알아낸 사실은 **변수에 인자로 줄 시 1='2' 이런식으로 키값이 단순하게 숫자가 되면 식이 안된다는 에러가 뜨면서 안된다. 변수처럼 보이게 rara1이런식으로 문자와 이어 줘야 하는것 같다.
'Python > 2.7 information' 카테고리의 다른 글
분수 관련 fraction과 struct모듈 (0) | 2015.03.28 |
---|---|
파이썬을 더 멋있게 쓰기위한 함수, itertools 모듈 (0) | 2015.03.05 |
pyv8 (python javascript engine) (0) | 2015.02.24 |
파이썬의 멀티쓰레딩과 멀티프로세싱. (0) | 2015.02.13 |
scapy 기초. (0) | 2015.02.09 |