def function(*args): 로 함수의 파라미터 안에 *이 들어간 것을 가끔 볼 수 있다.
이것은 매개변수가 몇 개 들어올지 모를 때 쓰인다.
보통 def function(a):를 하면 매개변수로는 변수 a하나만 들어간다.
그러나 들어오는 매개변수가 하나가 아니고 가변적으로 변할 때 *을 쓰는 것이다.
def function(*args):
print(args)
function('asdf')
function('asdf',123,'asdfdfdsf')
# 결과
#('asdf',)
#('asdf', 123, 'asdfdfdsf')
이렇게 매개변수가 하나가 아니라 여러개가 들어갈 때 쓰인다.
def function(**kwargs): 그럼 또 **은 뭐냐?
이것도 앞의 *과 같은 기능에 추가로 딕셔너리 형태로 매개변수를 받는다는 것이다.
코드설명이 더 이해가 쉽다.
def function(**kwargs):
print(kwargs)
function(nn='asdf',aa=123)
# 결과
#{'nn': 'asdf', 'aa': 123}
function(123)
# 결과
# TypeError: function() takes 0 positional arguments but 1 was given
이처럼 key와 value값의 형태로 인자가 들어가게 된다.
대신 key가 없는 파라미터는 오류를 발생시킨다.
그럼 key없는 파라미터와 key가 있는 파라미터들을 동시에 쓸려면,
def function(*args,**kwargs):
print(args)
print(kwargs)
function(123,'asdf', aa=1,bb='asdf')
# 결과
#(123, 'asdf')
#{'aa': 1, 'bb': 'asdf'}
function(aa=1,bb='asdf','ASDF',1234)
# 결과
# SyntaxError: positional argument follows keyword argument
이렇게 써주면 된다. 대신 파라미터들의 자리는 지켜줘서 넣어줘야 한다.
'잡다한 코딩 노하우 > Python' 카테고리의 다른 글
클래스와 상속 (0) | 2021.12.17 |
---|---|
함수 정의 in python (0) | 2021.10.26 |
colab에 CUDA OpenCV 설치하기 (0) | 2021.08.24 |
colab에서 스크립트 sh파일 실행시키기 (0) | 2021.08.24 |
마지막 데이터 짤짤이 컷하는 방법 in python (0) | 2021.08.21 |
댓글