노마드 코더 Python으로 웹 스크래퍼 만들기
https://nomadcoders.co/python-for-beginners
인수의 개수가 정해지지 않은 가변 인수(variable argument)에 사용한다. 즉, 같은 함수에 인수 한 개를 넣을 수도 있고, 열 개를 넣을 수도 있다. 또는, 인수를 넣지 않을 수도 있다.
관례적으로 arguments를 줄여서 args
로 사용
함수에 무제한으로 arguments를 넣을 수 있다.
입력값이 몇 개이든 상관이 없다.
입력값을 전부 모아서 하나의 튜플로 만들어 주기 때문이다.
*args
처럼 매개변수 이름 앞에 *
을 붙이면 입력값을 전부 모아서 튜플로 만들어 준다.
args
는 튜플이라서 for로 반복할 수 있다.
def add_many(*args):
print(args) # args 출력
result = 0
for i in args:
result = result + i
return result
result = add_many(1,2,3)
👉 (1, 2, 3) # 입력값을 모아서 튜플로 만들어 준다.
def add_many(*args):
print(args) # args 출력
result = 0
for i in args:
result = result + i
return result
result = add_many(1,2,3,4,5,6,7,8,9,10)
print(result)
👉
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) # 입력값을 전부 모아서 튜플로 만들어 줌
55
*args는 단독으로만 사용 가능 한 게 아니다.
다른 매개변수와 같이 써도 된다.
고정 인수와 가변 인수를 함께 사용할 때는 고정 매개변수를 먼저 지정하고, 그 다음 매개변수에 *
를 붙여주면 된다. 매개변수 순서에서 *args
는 반드시 가장 뒤쪽에 와야 합니다.
def add_mul(choice, *args): # *args는 반드시 가장 뒤쪽에 둔다.
print(choice, args) # 매개변수 둘 다 출력
if choice == "add":
result = 0
for i in args:
result = result + i
elif choice == "mul":
result = 1
for i in args:
result = result * i
return result
result = add_mul('mul', 1, 2, 3)
print(result)
👉
mul (1, 2, 3) # args만 튜플 형태이다.
6
입력 받은 모든 숫자를 더한다.
def plus(*args):
result = 0
for number in args:
result += number
print(result)
plus(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
👉 55
인수의 개수가 정해지지 않은 가변 인수(variable argument)에 사용한다. 즉, 같은 함수에 인수 한 개를 넣을 수도 있고, 열 개를 넣을 수도 있다. 또는, 인수를 넣지 않을 수도 있다.
키워드 파라미터를 사용할 때는 매개변수 앞에 별 두 개(**)
를 붙인다.
**kwargs
처럼 매개변수 이름 앞에 **
을 붙이면 매개변수 kwargs는 딕셔너리가 되고 모든 key=value
형태의 결괏값이 그 딕셔너리에 저장된다.
관례적으로 keyword arguments를 줄여서 kwargs로 사용
kwargs
는 딕셔너리라서 for로 반복할 수 있다.
인수를 직접 넣어도 되고 딕셔너리 언패킹을 사용해도 된다.
※ 딕셔너리 언패킹: 딕셔너리를 만들고 딕셔너리 앞에 **
를 붙여서 인수로 입력하면 된다.
def print_kwargs(**kwargs):
print(kwargs)
print_kwargs(a) # 입력값을 a=2 이런 식으로 줘야 되는데 그냥 a만 써서 오류남
👉
Traceback (most recent call last):
File "main.py", line 4, in <module>
print_kwargs(a)
NameError: name 'a' is not defined
다시 값을 제대로 입력해준다.
def print_kwargs(**kwargs):
print(kwargs) # kwargs 출력
print_kwargs(a=2) # 입력값을 key=value 형태로 쓰니까 오류 안 남
👉
{'a': 2} # kwargs는 딕셔너리 형태
마찬가지로 매개변수에 **kwargs
썼다고 다른 매개변수 같이 못 쓰는 거 아님
def print_kwargs(num, **kwargs):
print(num, kwargs) # 매개변수 둘 다 출력
print_kwargs(4, a=2)
👉
4 {'a': 2} # kwargs만 딕셔너리 형태로 나옴
def plus(a, b, *args, **kwargs):
print(args, kwargs) # 매개변수 a, b는 출력 안 함
return a + b
plus(1, 2, 3, 4, 5, 6, 7, 8, 9, 10,hello=True)
👉
(3, 4, 5, 6, 7, 8, 9, 10) {'hello': True} # args는 튜플, kwargs는 딕셔너리로 나옴
함수에 인수를 순서대로 넣는 방식을 위치 인수(positional argument)라고 한다. 즉, 인수의 위치가 정해져 있다.
plus(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
파이썬에서는 인수의 순서와 용도를 매번 기억하지 않도록 키워드 인수(keyword argument)라는 기능을 제공한다.
키워드 인수는 말 그대로 인수에 이름(키워드)을 붙이는 기능인데 key=value
형식으로 사용한다.
키워드 인수를 사용하면 인수의 순서를 맞추지 않아도 키워드에 해당하는 값이 들어간다.
key=value 형식
a=2
name=”bori”