함수
def 함수이름(매개변수):
수행할문장1
수행할문장2
-> 매개변수와 인수
1. 매개변수는 함수에 입력으로 전달된 값을 받는 변수
2. 인수는 함수를 호출할 때 전달받는 입력값

-> 입력값과 리턴값에 따른 함수의 형태
- 일반적인 함수
- 입력값이 있고 리턴값이 있는 함수
- 일반 함수의 전형적인 예. ex) 리턴값을받을변수=함수이름(입력인수1,입력_인수2,...)
- 입력값이 없는 함수
- 매개변수 부분을 나타내는 함수 이름 뒤의 괄호 안이 비어있음
- 함수 사용 시 괄호 안에 아무 값도 넣지 않아야 함
- 리턴값이 없는 함수
- 리턴값이 없는 함수는 호출해도 리턴되는 값이 없음
- ex) 함수이름(입력인수1,입력_인수2,...)
- 근데 리턴값이 진짜 없을까? def add(a,b): print('더하기 연산 : ' %(a+b)); a=add(3,4); print(a)하면 None출력. None은 거짓을 나타내는 자료형으로 리턴값이 없을 때 쓰인다. 즉, 진자 리턴값 없는 거임.
- 입력값도, 리턴값도 없는 함수
- 입력 인수를 받는 매개변수도 없고 return문도 없는, 즉 입력값도 리턴값도 없는 함수
- ex) def say(): print('HI'); say() 하면 HI출력
-> 매개변수를 지정하여 호출하기
1. 함수 호출 시 매개변수 지정 가능
- sub(a,b)라는 함수가 있을 때 sub(b=3,a=7)
-> 실습 볼만한 거
- 리스트 자료형으로 성적을 입력받아 평균 값을 출력

- 입력 문자열을 다섯 글자씩 출력해주는 함수

-> *매개변수 - 입력값이 몇 개가 될지 모를 때
1. 파이썬에서 해결 방법
- 일반 함수 형태에서 괄호 아늬 매개변수 부분이 *매개변수로 바뀜

- 매개변수 앞에 *을 붙이면 입력값을 전부 모아 튜플로 만들어 줌
-> *매개변수 앞에 다른 매개변수가 들어갈 수 있음
1. ex)
이거 add_mul('mul',[1,2,3])이런식으로 보내버렸음;.; ('mul',1,2,3)이 맞음
-> 키워드 매개변수 - 매개변수 앞에 별 2개 붙임
-> 함수의 리턴값은 하나!
1. 2개의 입력 인수를 받아 리턴하는 함수
c언어에서도 return값은 하나이다. 다만 return a+b,a*b하면 a+b는 무시되고 마지막 return값인 a*b만 리턴된다. 파이썬은 저게 그대로 튜플로 반환되어서 신기하다 
- return문을 2번 사용하면 리턴값은 하나

맨 처음 return문이 반환된다. 헷갈리지말기. return문에 ,로 구분되는 거면 ,뒤가 반환, return자체가 2개면 첫번째 return이 반환
-> 매개변수에 초깃값 미리 설정![업로드중..]()
- 초깃값을 설정해주면 입력값을 주지 않아도 알아서 초깃값 True를 가지게 됨.
- 주의할 점은 초깃화하고 싶은 매개변수는 항상 뒤쪽에 놓아야 하는 것.