함수(function)은 마법상자와 같다. 함수라는 마법상자에 뭔가 넣으면 뭔가 튀어나온다.
물론 어떤 상자는 뭘 넣지않아도 결과물을 만들어내기도하고 어떤 상자는 죽어라 넣어도 아무것도 만들지 않는다.
우리가 학창시절 배웠던 방정식도 사실 함수였다.
y = 2x + 1 (x에 숫자를 넣어서 y값을 구한다! 라고 생각할 때 x는 매개변수이고 y는 return 값이다. 매개변수 x에 3이라는 인수를 넣어주면 7이라는 return값이 출력된다.)
함수에는 입력값과 결과값이 있을수도 있고 없을수도 있다.
입력값이 없다는건 매개변수(parameter)가 없는 것이고 결과값이 없는건 return이 없다는 것!
함수의 여러가지 형태.
1. 입력값 O 출력값 O
2. 입력값 O 출력값 X
3. 입력값 X 출력값 O
4. 입력값 X 출력값 X
5. 입력값이 몇 개인지 모를 때
6. 키워드 파라미터 (딕셔너리 만들기)
a=4
b=3
def vartest(a):
#함수 설정 위에 상수로 설정해준 a의 4를 함수의 매개변수 a에 넣는 것임! 위에 상수 a와 함수의 a는 다르다는 것!!!
# a는 매개변수(parameter), 매개변수에 대입할 값인 4는 인수(argument)
a = a+15
return a #이 함수의 최종 반환값
print(vartest(a)) # 리턴값 19를 프린트
print(b) #당연히 상수 b값 3을 프린트
def add(a, b) :
print(a + b) # 프린트는 콘솔에 출력할 기능일뿐 함수로서 유의미한 결과를 만들어 내지 못한다.
add(1, 2) # 3을 콘솔에 프린트한다.
result = add(1, 2) # add(1, 2)가 콘솔에는 3을 프린트 했지만 result로 넣어줄 값은 없다. 함수의 결과값이 없기 때문이다.
print(result) # none 출력
def hello() : # 매개변수가 없음
return "hi, nice to meet you" # 매개변수는 없지만 함수 출력값은 있음
print(hello()) #hi, nice to meet you 프린트
def hello()
print("hi")
def add_many1(*args): # 꼭 args 를 안써도 되지만 통상적으로 많이 쓴다.
result = 0
for i in args:
result = result + i
return result
print(add_many1(1,2,3,4,5)) # (1,2,3,4,5)를 튜플로 만들어서 (*args)에 대입해줌
def add_many2(choice, *args): # 입력 str에 따라 함수 계산식 자체가 바뀜
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
print(add_many2("mul", 1,2,3,4))
def print_kwargs(**kwargs):
print(kwargs)
print(print_kwargs(name='sik', age=1))
출력값 : {'name': 'sik', 'age': 1}