본문 바로가기
Python

[Python 기초] 파이썬 함수(Funtion) - 내장함수 , 사용자 정의 함수 - 1

by dev수니 2021. 4. 2.
반응형

 

 

함수(Funtion)

 하나의 특정한 목적의 작업을 수행하기 위해 독립적으로 구성된 프로그램 코드의 집합을 말한다.

 

 


 

 

 1  내장함수

파이썬에서 기본적으로 제공하는 함수로 print() input() randint() 등이 있다.

 

 

 

 

 

 

 

 

 2  사용자 정의 함수

 

사용자가 원하는 함수를 직접 정의해서 만든 함수이다.
  # 함수 정의 : 파이썬에게 미리 알려주는 것.
  # 함수 호출 : 만들어진 함수를 불러낸다. (실행)

 

 

 

사용 방법은 다음과 같다.

def 함수명(매개변수):
     실행명령문1
     실행명령문2
     ...
     return 출력

 

 

 

함수를 정의해놓았을 때의 장점은 다음과 같다.

 

   1. 재사용이 가능하다.
   2. 따라서 코드의 중복을 제거한다.
   3. 코드의 분리화(구조화)에 의해 가독성이 높아진다.

 

 

 

추가로 기본적으로 프로그램을 실행할 때 제일 먼저 실행되는 함수 main()이 있다.
다른 언어의 경우 main()이 시각적으로 나타나있지만 파이썬은 숨어있다. 코드를 작성하는 부분 전체가 main에 해당된다.

 

 

 

 

함수의 4가지 종류
# 입력값(Factor) 존재, 반환값(Return) 존재
# 입력값(Factor) 존재, 반환값(Return) 없음
# 입력값(Factor) 없음, 반환값(Return) 존재
# 입력값(Factor) 없음, 반환값(Return) 없음

 

 

 

 

 

그 다음 예제를 통해 사용자 정의 함수를 구성해보자.

 

 

 

 

 

쥬씨라는 함수가 있고 그 구성을 만들어보자.

1
2
3
4
5
6
7
8
def 쥬씨(fruit):      # fruit == 매개변수
     print("과일주스만드는중...")
     print("주스가 나왔습니다.")
     print(fruit,"주스")
쥬씨("사과")     # "사과" == 인수 : 함수를 호출할 때 매개변수로 전달되는 입력값을 의미한다.
쥬씨("딸기바나나")
쥬씨("파인애플")
쥬씨("멜론")
cs
과일주스만드는중...
주스가 나왔습니다.
사과 주스
과일주스만드는중...
주스가 나왔습니다.
딸기바나나 주스
과일주스만드는중...
주스가 나왔습니다.
파인애플 주스
과일주스만드는중...
주스가 나왔습니다.
멜론 주스
>>> 

쥬씨() 함수의 경우 입력값이 존재, 반환값이 없는 형태이다.

 

 

 

 

 

두개의 정수를 받아서 더하는 함수

1
2
3
def add(a,b):
     print(a+b)
     print("내가 만든 함수")
cs
>>> add(1000,42342)   # 정수(int)
43342
내가 만든 함수
>>> add(1.245,456.234)  # 실수(flaot)
457.479
내가 만든 함수
>>> add("닐리리","맘보")  # 문자열(str)
닐리리맘보
내가 만든 함수
>>>

입력값이 존재, 반환값이 없는 형태이다.

 

 

 

 

세 정수를 받아서 가장 큰 값을 비교하는 함수를 작성

1
2
3
4
5
6
7
def max1(a,b,c):
     if a>and a>c:
          print(a,"가 가장 크다.")
     elif b>and b>c:
          print(b,"가 가장 크다.")
     else:
          print(c,"가 가장 크다.")
cs
>>> max1(10,5,70)
70 가 가장 크다.

입력값이 존재, 반환값이 없는 형태이다.

 

 

 

 

 

두개의 수를 받아서 곱하고 그 값을 반환하는 함수

1
2
3
def getM(a,b):
     return a*b
getM(10,20)
cs

입력값이 존재, 반환값(return)이 존재하는 형태이다.

결과는 X, 출력함수 없음.

 

 

⊙ return

함수가 종료된다는 의미를 갖고 있으며 결과값을 main으로 반환한다. return은 하나만 존재할 수 있지만 데이터는 여러개 반환가능하다.

return 해주지 않을 경우 함수는 호출이 끝나면 함수 내부에 있는 변수와 변수 값 자체를 데이터상에서 삭제하기 때문에 결과값이 사라진다.
따라서 return을 사용해주거나 print()를 통해 출력해주거나 함수 밖에서 변수를 만들고 결과값을 변수에 저장해줘야한다.

 

 

 

세개의 수를 받아서 가장 큰 수를 main에서 출력 결과값을 돌려주는 함수

1
2
3
4
5
6
7
8
9
def funt1(a,b,c):
     if a>and a>c:
          return a
     elif b>and b>c:
          return b
     else:
          return c
res = funt1(10,30,25)
print("가장 큰 값 :",res)
cs
가장 큰 값 : 30
>>>

 

 

 

 

# 다른 함수를 호출하는 함수  ★꼭 이해하기!

1
2
3
4
5
6
7
8
9
def a():
     c = b()
     return c
def b():
     e = d()
     return e
def d():
     return "다다"
a()
cs

실행결과 아무것도 나타나지 않는다.

 

 위 코드의 구동을 자세히 설명하자면 a()를 호출했을 경우 b()를 호출하게 되고 b내부에서는 d()를 호출하게 되어 d가 리턴한 값 '다다'를 자신을 호출한 b한테 전달하여 e에 저장된다. 그리고 b는 e값을 자신을 호출한 a에게 값을 전달하고 c에 저장한다.


 a는 결과적으로 main으로 값을 전달하지만 main에 저장 및 출력할 수 있는 요소가 없으므로 호출이 끝난 이후 값은 지워진다.

 

 따라서 실행결과 아무것도 나타나지 않는 것이다.

 

main()상에 함수는 존재하기 때문에 프롬프트에서 a()를 입력해주면 다음과 같이 '다다'가 출력된다.

 

 

 

 

 

 

main에서 정수 하나를 입력받아서 showNum()입력받은 정수를 넘겨준다.

   showNum : 전달받은 수부터 100까지 출력

1
2
3
4
5
6
def showNum(f):
     for a in range(f,101):
          print(a)
# main
number = int(input("정수>"))
showNum(number)
cs
정수>96
96
97
98
99
100
>>> 

 

 

 

 

 

예금계좌 : 1. 입금, 2. 출금, 3. 잔액조회, 4. 종료를 입력하는 프로그램

# 초기 잔액 : 10000 , 출금 금액 : 20000

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
def deposit(a):     # 입금
     print(a,"입급했습니다.")
# 기계입장에서 돈을 입금하고 나면 나한테 돈을 돌려주지 않는다.
def withdraw(b):    # 출금
     money = 10000
     if money < b:  # 잔액이 없을 경우가 있기 때문에 if문 사용
          return "잔액이 부족합니다."
     else:
          return b
# 출금액 입력 -> 출금확인 -> 돈을 돌려준다.
def account_Check():
     print("잔액조회창 입니다.")
     
# main
print("*"*15)
print("ATM 기계입니다.")
print("1. 입금")
print("2. 출금")
print("3. 잔액조회")
print("4. 종료")
print("*"*15)
sel = int(input(">"))
if sel == 1:
     deposit(10000)
elif sel == 2:
     res = withdraw(20000)   # 돌려주는 값이 있기때문에 변수에 담아서 
     print("출금액:",res)   # 출력해줘야 한다.
elif sel == 3:
     account_Check()
elif sel == 4:
     print("ATM기 종료")
else:
     print("선택오류")
cs
***************
ATM 기계입니다.
1. 입금
2. 출금
3. 잔액조회
4. 종료
***************
>2      # (2 입력)
출금액: 잔액이 부족합니다.
>>>

 

 

 

 

입력값 없음, 반환값 없음

1
2
3
4
def menu():
     print("도움말")
     print("메뉴, 표시")
menu()
cs
도움말
메뉴, 표시
>>> 

 메뉴나 도움말을 이용할 때 주로 사용.

 

 

 

 

반응형

댓글