본문 바로가기
Base/Python

12. 함수 / 매개변수 / 함수의 리턴

by 귀멸 2023. 2. 23.

혼공파 50 ~ 53강

 

1. 함수 매개변수 기본

# 매개변수 : 함수의 괄호안에 넣는 변수

## parameter : 함수 정의 때 넣는 변수
## 함수를 설계하는 사람
### 1. 함수의 설명서 -> 문서(documentation)
### 2. 예외 처리 
def print_3_times(문자열, 횟수):
  if type(문자열) != str:
    print("첫 번째 매개변수는 문자열을 입력해야 합니다!")
  if type(횟수) != int:
    print("두 번째 매개변수는 정수를 입력해야 합니다!")
  for i in range(횟수): 
    print(문자열)

## argument : 함수 호출 때 넣은 값
print_3_times("안녕", 10) # 함수를 호출(call)한다.

# parameter의 개수와 argument의 개수는 같아야 한다.
## TypeError 발생

# argument에서 함수 설계에 맞는 자료형을 넣어야 함.

2. 가변 매개변수 함수

# 가변 매개변수 함수 : 매개 변수의 개수가 가변적
print("안")
print("안", "녕")
print("안", "녕", "")

# 목표
# print_n_times(횟수, 출력대상, 출력대상, ...)
# print_n_times(2, "안녕", "하세요")
# 안녕
# 하세요
# 안녕
# 하세요

# 1단계
# print_n_times(횟수, [리스트])
# 2단계
# 리스트로 받고 싶은 자료를 * 연산자를 붙여
def print_n_times(횟수, *리스트):
  for i in range(횟수):
    for 요소 in 리스트:
      print(요소)

print_n_times(2, ["안녕", "하세요"])


# 가변매개변수에 리스트 요소를 모두 사용하고 싶다면
# 리스트 전개연산자 *을 사용해서 가능하다
문자열목록 = ["안녕", "하세요"]

print_n_times(2, *문자열목록)

# 가변매개변수 뒤에는 일반매개변수가 올 수 없다.
# 이를 입력하기 위해서는 키워드 매개변수를 사용해야 한다.

def print_n_times(*리스트, 횟수):
  for i in range(횟수):
    for 요소 in 리스트:
      print(요소)

print_n_times(*문자열목록, 횟수=2)

3. 기본 매개변수

# 기본 매개변수
# 함수 사용 시 매개변수를 입력하지 않을 때 기본 값을 지정
# 기본 매개변수는 다른 매개변수들 보다 뒤에 정의된다.
def test(a = 10, b = 20):
  print(a)

test()            # 10
test(20)          # 20
# 키워드 매개변수 기본 매개변수
test(a = 30)      # 30

def print_n_times(*values, n=2):
  for i in range(n):
    for value in values:
      print(value)
    print()

print_n_times("문자열", "안녕하세요", n=2)


# print() 함수 이해
print("안", "녕", "하", "세", "요") # 안 녕 하 세 요
print("안", "녕", "하", "세", "요", sep="::") 
# 안::녕::하::세::요 sep의 기본 매개변수가 공백이었으나, 키워드 매개변수를 이용해 지정할 수 있음

print("안", "녕", "하", "세", "요", sep="::", end="")
print("안", "녕", "하", "세", "요", sep="::", end="")
# 안::녕::하::세::요안::녕::하::세::요
# end의 기본 매개변수는 /n으로 줄바꿈 되나 end에 키워드 매개변수를 아무것도 없이 지정하면 출 후에 줄바꿈되지 않는다

# 딕셔너리 매개변수
def 함수(*가변, **딕셔너리):
  print(가변, 딕셔너리)

함수("안", "녕", "하", a=10, b=20, c=30)

# ('안', '녕', '하') {'a': 10, 'b': 20, 'c': 30}
# 가변 매개변수는 튜플로 자료를 묶어주고,
# 딕셔너리 매개변수는 key=value로 딕셔너리로 묶인다.

4. 리턴

def f(x):
  # x = 1
  # 값을 들고 돌아가라!
  return x + 1

print(f(1)) # 2
print(f(2)) # 3

# def 함수(매개변수):
#   변수 = 초기화 
   # 여러가지 처리
   # 여러가지 처리
   # 여러가지 처리
#   return 변수

def sum_all(start, end):
  output = 0
  for i in range(start, end + 1):
    output += i
  return output

print(sum_all(1, 100)) # 5050


def f(x):
  return 2 * x + 1
print(f(10))

def mul(*values):
  output = 1
  for i in values:
    output *= i
  return output
print(mul(5, 7, 9, 10))

댓글