오숭이
2022. 1. 3. 16:55
여러 개의 입력값을 받는 함수 만들기
- *args
def add_many(*args):
result = 0
for i in args:
result = result + i
return result
*args처럼 매개변수 이름 앞에 *을 붙이면 입력값을 전부 모아서 튜플로 만들어 준다. 또한, 입력값이 몇 개든 상관없다.
*args는 임의로 정한 변수이며, *pey, *python처럼 아무 이름이나 써도 된다.
※ args는 매개변수를 뜻하는 영어 단어 arguments의 약자이며 관례적으로 자주 사용한다.
위 코드 실행시 결과는 아래와 같다.
result = add_many(1,2,3)
print(result)
6
result = add_many(1,2,3,4,5,6,7,8,9,10)
print(result)
55
*를 사용한 매개변수는 단독이 아닌 다른 매개변수가 같이 사용되기도 한다.
def add_mul(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
- **kwargs (키워드 파라미터)
키워드 파라미터를 사용할 때는 매개변수 앞에 별 두개(**)를 붙인다.
def print_kwargs(**kwargs):
print(kwargs)
즉 **kwargs처럼 매개변수 이름 앞에 **을 붙이면 매개변수 kwargs는 딕셔너리가 되고 모든 key=value 형태의 결괏값이 그 딕셔너리에 저장된다.
>>> print_kwargs(a=1)
{'a': 1}
>>> print_kwargs(name='foo', age=3)
{'age': 3, 'name': 'foo'}
함수의 결괏값은 언제나 하나이다.
>>> def add_and_mul(a,b):
return a+b, a*b
위 함수의 결과값은 2개가 아니라 1개이다. 결과값은 튜플값 하나인 (a+b, a*b)가 된다.
return의 또 다른 쓰임새
특별한 상황일 때 함수를 빠져나가고 싶다면 return을 단독으로 써서 함수를 즉시 빠져나갈 수 있다
>>> def say_nick(nick):
... if nick == "바보":
... return
... print("나의 별명은 %s 입니다." % nick)
...
>>>
>>> say_nick('야호')
나의 별명은 야호입니다.
>>> say_nick('바보')
>>>
함수 안에서 함수 밖의 변수를 변경하는 방법
- return 사용하기
a = 1
def vartest(a):
a = a +1
return a
a = vartest(a)
print(a)
- global 명령어 사용하기
a = 1
def vartest():
global a
a = a+1
vartest()
print(a)
위 코드에서 함수안의 global a 문장은 함수 안에서 함수 밖의 a 변수를 직접 사용하겠다는 뜻이다.
lambda
lambda는 함수를 생성할 때 사용하는 예약어로 def와 동일한 역할을 한다.
lambda 매개변수1, 매개변수2, ... : 매개변수를 이용한 표현식과 같이 사용한다.
>>> add = lambda a, b: a+b
>>> result = add(3, 4)
>>> print(result)
7
※ lambda 예약어로 만든 함수는 return 명령어가 없어도 결괏값을 돌려준다.