[파이썬] 클래스, 함수, 객체 이해
클래스, 함수, 객체 이해
def
함수 정의 시 def 함수를 사용한다.
def test_func(a,b):
print(a,b)
test_func(1,2)
또 하나 가변 갯수의 인자 *args , **kwargs 를 사용할 수 있다. 두 개의 의미는
- *args 는 값을 넣으면 함수에 변수가 튜플형태로 입력되는 것
- **kwargs 는 딕셔너리형태로 입력되는 것
- 꼭 args, kwargs 를 사용하지 않아도 된다, *var, **vars로 입력해도 된다. args, kwargs 는 관례
- 가변 갯수의 인자라고 부르기도 함, 이 의미는 사용자들이 얼마나 많은 인자들을 함수에 넣을 지 모를 경우, 즉 갯수가 변할 수 있는 상황에서 가변 갯수의 인자를 사용한다.
*args 은 키워드 되지 않은 가변 갯수의 인자를 내보낼 때 사용
**kwargs 은 키워드된 가변 갯수의 인자를 내보낼 때 사용, 즉 이름이 지정된 인자들을 처리할 때 사용된다
def test_func_tpl(*args):
print(args)
test_func(1,2,3,4) ## 1,2,3,4,5,5,6 길이가 바뀌어도 상관없음
==> (1,2,3,4)
def test_var_args(f_arg, *arg):
print('첫 번쨰 인자:', f_arg)
for arg in argv:
print('*arg의 다른 인자: ', arg)
test_var_args('ㅎㅇ','python', 'class 어렵네', '재미는 있네')
def test_func_dic(**kwargs): ## **kwds 와 같은 의미
print(kwargs)
test_func_dic(a=1,b=2,c=3)
==> {a=1,b=2,c=3}
def test_kward_func(**kwargs):
if kwargs is not None:
for key, value in kwargs.items():
print('{key} == {value}'.format(key,value))
test_kward_func(name='안성윤')
==> name == 안성윤
class 를 기반으로 코딩하다보면 변수를 일일히 받아야 하는 경우도 있지만 있어도 되고 없어도되는 그런 변수를 받아야 하는 경우
받는 입력값의 범위가 랜덤적일 경우 등 여러방면에 사용되는 것 같다.