혼자 공부하는 파이썬 Chapter5. 함수

5-1. 함수 만들기

개요.

  • 함수 만드는 방법을 학습
  • 함수 사용 방법을 이해

함수 만들기

함수의 기본

  • 함수
    • 코드의 집합
1
2
def 함수이름():
문장

함수 매개변수

  • 매개변수
    • 함수를 생성할 때 괄호 내부에 식별자를 입력하는 값
  • 예제
1
2
3
4
5
6
7
8
9
10
11
# 파일명.py 로 파이썬 파일을 표시
# 비주얼 스튜디오 코드에서 실행시 python 파일명.py

# 함수 매개변수
def print_n_times(value, n):
# n번을 반복
for i in range(n):
# value 값에 출력할 내용 입력
print(value)

print_n_times("Hi", 3,2)
  • 실행결과

    1
    2
    3
    4
    5
    $ python fun_basic.py
    Hi
    Hi
    Hi
    Hi
  • TypeError 예외처리

    • 매개변수 2개를 지정했는데 하나만 입력한 경우

    $ python fun_basic.py
    Traceback (most recent call last):
    File “C:\Users\82107\Desktop\Python\fun_basic.py”, line 5, in
    print_n_times(“Hi”)
    TypeError: print_n_times() missing 1 required positional argument: ‘n’

    • 매개변수를 초과한 경우

    $ python fun_basic.py
    Traceback (most recent call last):
    File “C:\Users\82107\Desktop\Python\fun_basic.py”, line 5, in
    print_n_times(“Hi”, 3,2)
    TypeError: print_n_times() takes 2 positional arguments but 3 were given

가변 매개변수

  • 가변 매개변수

    • print() 함수와 같이 매개변수를 원하는 만큼 받을 수 있는 함수
    1
    2
    def 함수 이름(매개변수, 매개변수, ... , *가변 매개변수):
    문장
  • 예제

1
2
3
4
5
6
7
8
9
10
11
12
# 가변 매개변수
def print_n_times(n, *values):
# n번을 반복
for i in range(n):
# values는 리스트처럼 활용
for value in values:
print(value)
# 단순한 줄바꿈
print()

# 함수를 호출
print_n_times(3, "안녕하세요", "만나서", "반갑습니다")
  • 실행결과
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ python fun_basic.py
    안녕하세요
    만나서
    반갑습니다

    안녕하세요
    만나서
    반갑습니다

    안녕하세요
    만나서
    반갑습니다

기본 매개변수

  • 기본 매개변수
    • ‘매개변수=값’ 형태
    • 매개변수를 입력하지 않았을 경우 매개변수에 들어가는 기본값
    • 기본 매개변수 뒤에는 일반 매개변수가 올 수 없음
      • Why? 글자가 첫 번째 매개변수에 할당되어야 하는지, 두 번째 매개변수에 할당되어야 하는지 확실하게 알 수 없다.
      • 파이썬 프로그래밍 언어는 내부적으로 기본 매개변수 뒤에 일반 매개변수가 오지 못하게 막은 것
  • 예제
1
2
3
4
5
6
7
8
9
# 기본 매개변수
def print_n_times(value, n=2):
# n번 반복
for i in range(n):
# value 출력
print(value)

# 함수를 호출
print_n_times("안녕하세요")
  • 실행결과
    1
    2
    3
    $ python fun_basic.py
    안녕하세요
    안녕하세요

키워드 매개변수

  • 키워드 매개변수
    • 매개변수 이름을 지정해서 입력하는 매개변수
  • 가변 매개변수와 기본 매개변수 둘을 같이 써보자.

기본 매개변수가 가변 매개변수보다 앞에 올 때

  • 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
# 키워드 매개변수
# 기본 매개변수가 가변 매개변수보다 앞에 올 때
def print_n_times(n=2, *values):
# n번을 반복
for i in range(n):
# values는 리스트처럼 활용
for value in values:
print(value)
# 단순한 줄바꿈
print()

# 함수를 호출
print_n_times("안녕하세요", "만나서", "반갑습니다")
  • 실행 결과
    1
    2
    3
    4
    5
    6
    7
    $ python fun_basic.py
    Traceback (most recent call last):
    File "C:\Users\82107\Desktop\Python\fun_basic.py", line 49, in <module>
    print_n_times("안녕하세요", "만나서", "반갑습니다")
    File "C:\Users\82107\Desktop\Python\fun_basic.py", line 40, in print_n_times
    for i in range(n):
    TypeError: 'str' object cannot be interpreted as an integer
  • 기본 매개변수는 가변 매개변수 앞에 써도 의미가 없다.

가변 매개변수가 기본 매개변수보다 앞에 올 때

  • 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
# 키워드 매개변수
# 가변 매개변수가 기본 매개변수보다 앞에 올 때
def print_n_times(*values, n=2):
# n번을 반복
for i in range(n):
# values는 리스트처럼 활용
for value in values:
print(value)
# 단순한 줄바꿈
print()

# 함수를 호출
print_n_times("안녕하세요", "만나서", "반갑습니다", 3)
  • 실행결과
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ python fun_basic.py
    안녕하세요
    만나서
    반갑습니다
    3

    안녕하세요
    만나서
    반갑습니다
    3

키워드 매개변수

  • [”안녕하세요”, “만나서”, 반갑습니다”] 를 세번 출력하도록 실행
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 키워드 매개변수
# 가변 매개변수
def print_n_times(*values, n=2):
# n번을 반복
for i in range(n):
# values는 리스트처럼 활용
for value in values:
print(value)
# 단순한 줄바꿈
print()

# 함수를 호출
# 매개변수 이름을 직접적으로 지정
print_n_times("안녕하세요", "만나서", "반갑습니다", n=3)
  • 실행결과
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ python fun_basic.py
    안녕하세요
    만나서
    반갑습니다

    안녕하세요
    만나서
    반갑습니다

    안녕하세요
    만나서
    반갑습니다

리턴

  • return
    • 함수를 실행했던 위치로 돌아가라는 뜻, 함수가 끝나는 위치를 의미

자료 없이 리턴하기

  • 예제
1
2
3
4
5
6
7
8
9
10
11
# 리턴
# 자료 없이 리턴하기

# 함수를 정의
def return_test():
print("A 위치입니다")
return # 리턴합니다.
print("B 위치입니다")

# 함수를 호출
return_test()
  • 실행결과
    1
    2
    $ python fun_return.py
    A 위치입니다
  • 결과적으로 “A 위치입니다” 만 출력하고 프로그램이 종료

자료와 함께 리턴하기

  • 예제
1
2
3
4
5
6
7
8
9
# 자료와 함께 리턴하기

# 함수를 정의
def return_test():
return 100

# 함수를 호출
value = return_test()
print(value)
  • 실행결과
    1
    2
    $ python fun_return.py
    100

아무것도 리턴하지 않기

  • 예제
1
2
3
4
5
6
7
8
9
# 아무것도 리턴하지 않기

# 함수를 정의
def return_test():
return

# 함수를 호출
value = return_test()
print(value)
  • 실행결과
    1
    2
    $ python fun_return.py
    None

기본적인 함수의 활용

1
2
3
4
5
6
def 함수(매개변수):
변수 = 초깃값
# 여러 가지 처리
# 여러 가지 처리
# 여러 가지 처리
retunr 변수
  • 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 범위 내부의 정수를 모두 더하는 함수

# 함수 선언
def sum_all(start, end):
# 변수 선언
output = 0
# 반복문을 돌려 숫자를 더함
for i in range(start, end + 1):
output += i
# 리턴
return output

# 함수 호출
print("0 to 100 : ", sum_all(0, 100))
print("0 to 1000 : ", sum_all(0, 1000))
print("50 to 100 : ", sum_all(50, 100))
print("50 to 1000 : ", sum_all(50, 1000))
  • 실행결과
    1
    2
    3
    4
    5
    $ python basic_func.py
    0 to 100 : 5050
    0 to 1000 : 500500
    50 to 100 : 3825
    50 to 1000 : 499275

출처

  • 혼자 공부하는 파이썬 - 윤인성 지음 / 한빛미디어

https://m.hanbit.co.kr/store/books/book_view.html?p_code=B2587075793

Share