파이썬의 함수와 매개변수에 대한 간단한 포스팅입니다.
아래의 사항들에 대해서 알아봅니다.
function:
1. 명사 (사람사물의) 기능
2. 명사 행사, 의식
3. 동사 (제대로) 기능하다(작용하다) (=operate)
from random import randrange as revelation_of_god
def god_bless():
round = 6
lottery = []
while round != 0:
lottery.append(revelation_of_god(1, 46))
round -= 1
print(f"Let the believer have light! \n {lottery}")
god_bless()
# 실행 결과
# Let the believer have light!
# [30, 40, 4, 39, 17, 35]
parameter: 매개 변수
매개 변수: 1. 수학 두 개 이상의 변수 사이의 함수 관계를 간접적으로 표시할 때 사용하는 변수.
from random import randrange as revelation_of_god
# your_name은 parameter(매개변수)
def god_bless_you(your_name):
round = 6
lottery = []
while round != 0:
lottery.append(revelation_of_god(1, 46))
round -= 1
print(f"Let {your_name} have light! \n {lottery}")
return lottery
# my_name("Homer-Jay-Simpson")은 argument(인수)
my_name = "Homer-Jay-Simpson"
god_bless_you(my_name)
# 실행 결과
# Let Homer-Jay-Simpson have light!
# [26, 45, 44, 31, 36, 17]
간단한 수식에 비유해서 parameter(매개변수)와 argument(인수)를 이해해 보자.
X = a + 2
라는 수식에 대해서 a = 5
를 넣으면 X 값은 7이 된다.X = a + 2
는 함수로 볼 수 있고a = 5
에서a
는 parameter(매개변수 / 형식인수)5
는 argument(인수 / 실인수)from random import randrange as revelation_of_god
def god_bless_you(your_name, your_god):
round = 6
lottery = []
while round != 0:
lottery.append(revelation_of_god(1, 46))
round -= 1
print(f"Behold! {your_god} says \n"
f"Let {your_name} have light! \n"
f"{lottery}")
my_name = "Homer-Jay-Simpson"
my_god = "Zeus"
god_bless_you(my_god, my_name)
# 실행 결과
# Behold! Homer-Jay-Simpson says
# Let Zeus have light!
# [10, 43, 8, 6, 26, 40]
parameter 전달 순서가 꼬여서 결과가 이상해졌다.
from random import randrange as revelation_of_god
def god_bless_you(your_name, your_god):
round = 6
lottery = []
while round != 0:
lottery.append(revelation_of_god(1, 46))
round -= 1
print(f"Behold! {your_god} says \n"
f"Let {your_name} have light! \n"
f"{lottery}")
my_name = "Homer-Jay-Simpson"
my_god = "Zeus"
god_bless_you(your_god=my_god, your_name=my_name)
# 실행 결과
# Behold! Zeus says
# Let Homer-Jay-Simpson have light!
# [28, 15, 36, 27, 9, 44]
from random import randrange as revelation_of_god
def god_bless_you(your_god, *args):
for foolish_human_being in args:
round = 6
lottery = []
while round != 0:
lottery.append(revelation_of_god(1, 46))
round -= 1
print(f"Behold! \n"
f"Let {foolish_human_being} have light! \n"
f"{lottery} \n")
god_bless_you(my_god, "Homer-Jay-Simpson", "Lisa-Simpson")
# 실행 결과
# Behold!
# Let Homer-Jay-Simpson have light!
# [43, 27, 33, 41, 1, 24]
# Behold!
# Let Lisa-Simpson have light!
# [3, 23, 43, 16, 27, 19]
*
를 붙여주면 입력값이 전부 튜플로 만들어져 함수 내부에서 사용된다.*args
는 ("Homer-Jay-Simpson", "Lisa-Simpson")인 튜플이 된다.*args
대신 다른 이름으로 매개변수를 정할 수도 있다.*args
를 사용한다.from random import randrange as revelation_of_god
def god_bless_you(your_god, **kwargs):
for fool, grade in kwargs.items():
if grade == "VIP":
round = 6
lottery = []
while round != 0:
lottery.append(revelation_of_god(1, 46))
round -= 1
print(f"Behold! {your_god} Says! \n"
f"Let {fool} have light! \n"
f"{lottery} \n")
else:
round = 5
lottery = []
while round != 0:
lottery.append(revelation_of_god(1, 46))
round -= 1
print(f"Behold! {your_god} Says! \n"
f"Let {fool} have some little light! \n"
f"{lottery} \n")
your_god = "Zeus"
god_bless_you(your_god, Homer="VIP", Moe="not VIP")
# 실행 결과
# VIP는 모든 정보를 받고 VIP가 아니면 불완전한 정보를 받는다.
# Behold! Zeus Says!
# Let Homer have light!
# [16, 28, 25, 17, 31, 45]
# Behold! Zeus Says!
# Let Moe have some little light!
# [3, 37, 40, 31, 23]
**
를 붙여주면 입력값이 전부 딕셔너리로 만들어져 함수 내부에서 사용된다.**kwargs
는 {"Homer": "VIP", "Moe": "not VIP"}인 딕셔너리가 된다.**kwargs
대신 다른 이름으로 매개변수를 정할 수도 있다.**kwargs
를 사용한다.*args
는 일반 매개변수보다 뒤에 위치해야 한다.*args
에 담을지 알 수 있다.**kwargs
는 *args
다음에 와야 한다.