Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- web
- dl
- Vision
- algorithm
- Depth estimation
- GAN
- cs
- 딥러닝
- 3d
- nerf
- pytorch
- Torch
- 알고리즘
- math
- PRML
- Front
- 자료구조
- Meta Learning
- computervision
- FGVC
- nlp
- FineGrained
- 머신러닝
- SSL
- REACT
- clean code
- CV
- Python
- classification
- ML
- Today
- Total
KalelPark's LAB
[ CLEAN CODE ] Clean Python, *args, **kwargs? 본문
*args, **kwargs란?
Python에서의 *, **는 주소값을 저장하는 의미가 아닙니다. 여러 개의 인수를 받을 때, 키워드 인수를 받을 때 사용하는 표시입니다.
*args
*args는 *arguments의 줄임말입니다. 즉, 다른 단어를 작성해도 상관없습니다.
이 지시어는 여러 개(복수개)의 인자를 함수로 받고자 할 때 쓰입니다.
*의 의미는 메모리 주소를 찾아서 값을 읽어준다는 의미이다.
**kwargs
kwargs는 keyword argument의 줄임말로 키워드를 제공합니다.
**kwargs는 (키워드 = 특정 값) 형태로 함수를 호출할 수 있습니다. 즉, 딕셔너리 형태로 함수 내부로 전달됩니다.
class nerf:
def __init__(self, purple = 5, role = 5):
self.purple = purple
self.role = role
def a_func(*args, **kwargs):
print(args)
print("--------")
ttt = nerf(**kwargs)
print(ttt.purple)
print(ttt.role)
print("예제")
a_func(1, 2, 3, purple = 2, role = 3)
>> 예제
(1, 2, 3)
--------
2
3
결론
*args 형식을 사용하면 key, value를 받는 형식을 제외한 모든 형식을 인자로 받는 것이 가능합니다.
**kwargs를 사용하면 key, value를 받는 형식의 인자로 받을 수 있습니다.
*args, **kwargs를 사용하면 어떤 형태의 인자든 허용가능합니다.
'Python > CLEAN CODE' 카테고리의 다른 글
[ CLEAN CODE ] 왈러스 연산자, ZIP, Packing, Unpacking? (0) | 2023.03.13 |
---|---|
[ CLEAN CODE ] PEP(Python enhancement proposal) 8, string? (0) | 2023.03.12 |
[ CLEAN CODE ] Clean Python, Numpy with Linear Algebra (0) | 2023.01.21 |
[ CLEAN CODE ] Clean Python, broadcast_to, linspace란? (0) | 2023.01.21 |
[ CLEAN CODE ] Clean Python, YACS(Yet Another Configuration System)란? (0) | 2023.01.14 |
Comments