🖼️

4.3.1. 함수의 기본 개념


1. 함수

  1. 코드를 재사용 할 수 있으며, 실수를 줄일 수 있습니다.
  1. 코드의 구조를 한 눈에 파악할 수 있습니다.
def 부지매입(): pass def 설계도면작성(): pass def 인력모집(): pass def 벽돌쌓기(): pass def 지붕올리기(): pass 부지매입() 설계도면작성() 인력모집() 벽돌쌓기() 지붕올리기()
코드가 길다고 하더라도 출력한 코드를 보고 어떤 구조인지 한 눈에 파악할 수 있고 코드의 길이도 짧아집니다.

1.1. 들여쓰기

함수는 def이라는 키워드로 정의되며 들여쓰기 된 곳까지만 함수의 범위로 간주합니다.
입력
#들여쓰기 def printnum(): #함수의 정의 print('1') print('2') print('3') printnum() #함수의 호출
 
출력
1 2 3
 
마지막에 있던 print('3')을 들여쓰지 않고 내어써 보았습니다.
입력
def printnum(): print('1') print('2') print('3') printnum()
 
출력
3 1 2
Python은 들여쓰기(intend)로 함수의 범위를 정합니다. 함수의 범위를 규정하는 것을 화이트스페이스(공백)입니다. 탭으로 한번에 들여 쓸 수 있지만 파이썬 개발 제안서(PEP-8)에서는 스페이스 4번으로 하기로 약속했으니 스페이스로 써주세요.
 

1.2 function

이번에는 함수에 대해 좀 더 상세히 알아보도록 하겠습니다.
입력
def function(x,y): z = x + y return z print(f'function(5, 7) = {function(5, 7)}')
 
출력
function(5, 7) = 12
 
함수는 크게 아래와 같이 구분할 수 있습니다.
  1. 함수의 정의
  1. 함수의 입력
  1. 함수의 기능과 연산
  1. 함수의 출력(return)
함수의 모든 요소가 필요충분조건인 것은 아닙니다. 예를 들어 input이 없는 함수도 있고, return 값이 없는 함수도 있으며(자동으로 None이 할당) function이 없는 함수도 있습니다. 함수를 선언하였다면 호출해야만 함수가 작동하게 됩니다. 위 예제에서는 function(5, 7)이라는 문장으로 함수를 호출합니다.
 
notion imagenotion image
 

입력
def function(x,y): #Input z = x + y #Function print(z) #Output? print("function(5,7) = ", function(5,7))
 
출력
12 function(5,7) = None
가끔 print와 return을 헷갈려 하시는 분들이 계셔서 참고내용으로 넣었습니다. print는 또다른 함수입니다. 위의 예제에서 function(5, 7)을 호출한 값을 출력해 보았더니 None이 출력됩니다. 이는 이 함수의 return 값이 없기 때문입니다.
 

1.3 function 연습

입력
PI = 3.14 def circle(r,inputpi): z = r*r*inputpi return z result = circle(10, PI) print(result)
 
출력
result : 314.0
 
c언어에서는 define이라는 문장을 사용하여 상수를 정의합니다. 상수(constant)란 변경할 수 없는 수 입니다. Python에서는 이러한 상수를 선언하는 문법이 없습니다. 다만 일반적으로 이름 전부를 대문자로 선언하면 상수라고 이해합니다. 여기서는 PI(원주율) 3.14가 상수가 됩니다. 한번 더 주의 깊게 보아야 할 내용은 circle 함수에서 인자값으로 받는 원주율의 변수가 PI가 아니라 inputpi라는 것입니다. 이 개념에 대해서는 다음장 지역변수와 전역 변수를 다루며 말씀드리도록 하겠습니다.
 

 
입력
π = 3.14 def circle(r, inputpi): z = r*r*inputpi return z result = circle(10,π) print(result)
 
출력
result : 314.0
이처럼 특수문자로도 사용이 가능합니다. 같은 원리로 한글 코딩도 가능합니다. 한글 코딩의 장점으로는 고유명사를 표현하기 좋으며, 교육용으로도 주목받고 있습니다. HTML, CSS, Javascript등 다양한 분야에서 한글코딩이 주목받고 있으며 자세한 내용은 김대현 대표님의 '한글코딩.org'에서 확인할 수 있습니다. 아래는 한글코딩 예시입니다.
 
입력
def 한글코딩(글자): print(글자) 한글코딩('안녕, 세상아.')
 
출력
안녕, 세상아
 

1.4 function 응용

1) 함수안에 함수 만들기

def 함수이름1(): 코드 def 함수이름2(): 코드
 
이번에는 위 코드처럼 함수 속에 함수를 만드는 방법입니다. 위와 같이 def 로 함수를 만들고 그 안에 다시 def 로 함수를 만들면 됩니다.
입력
def print_text(): text = 'Python 기초 배우기!' def print() print(text) print() print_text()
 
출력
Python 기초 배우기!
함수 print_text 안에서 다시 def로 함수 print를 만들었습니다. 그리고 print_text안에서 print( )처럼 함수를 호출했습니다. 하지만 아직 함수를 정의만 한 상태이므로 아무것도 출력되지 않습니다.
두 함수가 실제로 동작하려면 바깥쪽에있는 print_text를 호출해주어야 합니다. 즉, print_text → print 순으로 실행됩니다.