imhamburger 님의 블로그
파이썬(Python) - 디폴트 파라미터, *args, **kwargs 본문
파라미터값에 default를 둘 수 있으며, 보통 많이 사용하는 파라미터값을 default로 설정한다.
def gen_path(filename, path='/data/csv', home='~/my/airflow'):
print(f"{home}{path}/{filename}")
>>> gen_path('file') #입력값
>> ~/my/airflow/data/csv/file #출력값
위 코드에서 'path'와 'home'을 default값으로 각각 경로를 설정하였다.
그럼 입력할 때 이미 default 값이 설정되어 있기때문에 출력값은 입력값과 default값이 합쳐져 나온다.
만약 default값이 앞으로 온다면?
에러가 날 것이다. default 파라미터값은 앞에 올 수 없다.
def add(step=1, i)
File "<stdin>", line 1
def add(step=1, i)
^
SyntaxError: non-default argument follows default argument
만약 어느 한 개만 default값이 아니라 다른 값으로 받고싶다면?
def gen_path(filename, path='/data/csv', home='~/my/airflow'):
print(f"{home}{path}/{filename}")
gen_path('abc.csv', home='home/hamsunwoo') #입력값
>> home/hamsunwoo/data/csv/abc.csv #출력값
default 파라미터를 다른값으로 지정해서 사용할 수 있다.
간혹 *args와 **kwargs가 들어간 함수를 본다. *args는 Non-Keyword Arguments로 어떠한 파라미터를 넣어도 다 대응한다.
*args는 파라미터를 넣을 때마다 다 대응한다. 사실 * 한개만 붙이고 다음에 오는 글자는 내 마음대로 지정해도되지만 보통 args 단어를 쓴다.
def abc(*args):
print(args)
사용예시
abc(1, 3, 4, ham) #입력값
>> 1, 3, 4, ham #출력값
for문과 함께 응용하여 사용할 수 있다.
def abc(*args):
r = 1
for i in args:
r = r + i
return r
abc(1, 2, 3, 4) #입력값
>> 2, 3, 4, 5 #출력값
**kwargs는 Keyword Arguments로 키워드가 있는 argument 딕셔너리이다.
def abc(**kwargs):
... for key, value in kwargs.items():
... print(f'{key} => {value}')
입력값
abc(a=1, b=2, c=3)
출력값
a => 1
b => 2
c => 3
*args와 **kwargs를 같이쓸 때는 *args가 먼저 나와야 한다. **kwargs가 먼저나오면 에러가 난다.
부록) 파이썬 같은 기능의 코드표현
def abc(a,b):
... return a + b
...
>>> abc(1,2)
3
>>> def abc(a: int, b: int) -> int:
... return a+b
...
>>> abc(1,2)
3
'파이썬(Python)' 카테고리의 다른 글
파이썬(Python) - Requests GET 요청, POST 요청 (0) | 2024.08.02 |
---|---|
파이썬(Python) - 환경변수 불러오기 os.getenv (0) | 2024.07.31 |
파이썬(Python) - argparse 이용하여 띄어쓰기 포함한 인자값 받기 (0) | 2024.07.26 |
파이썬(Python) - {subprocess.py:93} INFO - cut: stdin: Illegal byte sequence 에러 해결하기 (2) | 2024.07.23 |
파이썬(Python) - 패키지 설치하고 내가 만든 기능에 적용해보기 (0) | 2024.07.20 |