본문 바로가기
개발&코딩/Python

[Python] 함수와 사용법

by 우동이 2020. 9. 11.
300x250

많이 쓰이는 언어 C나Java등 기존 프로그래밍 언어는

함수지향적 코딩을 하는데 Python은 

interpreter식 그리고 객체지향적 언어이다

 

역시 함수의 기능도 지원하는데 기존 제작되어 있는

라이브러리와 모듈을 사용하면 

다양한 기능을 사용하는 여러 함수들을 사용할 수 있다.

 

def function_test: #함수의 원형 끝에는 :
	pass
    

 함수를 생성할 때에는 def라는 예약어와 함께 함수의 이름을 선언해주면 된다

제어문과 마찬가지로 함수의 이름 끝에는 :를 붙여줘야 한다

 

함수는 수학적 정의의 함수와 다르게 

프로그램속 함수는 기능의 집합이라는 의미를 가지고 있으며

 

우리가 만들 함수들은 전부 각 기능에 걸맞는 이름을 가지고 있어야 하며

내부의 코드들 역시 우리가 원하는 기능과 부합해야만 한다.

예를 들어 덧셈의 값을 return 해주는 add라는 함수를 만든다고 치자

def add(a,b):
    return a+b;

print(add(3,4))
>>> 7

 

이와 같은 형태를 띄게 될 것이다

add라는 함수는 매개변수 a와 b라는 두 개의 정수형 인자를 받아

더한 값을 return 해준다

 

그럼 우리는 그 함수의 return값을 바로 print()를 통해 출력해주기만 하면된다.

함수는 매개변수라는 인자와 값을 반환하는 return 기능을

가지고 있을수도 혹은 가지고 있지 않을 수도 있다.

각기 다양한 기능을 만들기 위함이다

 

이렇듯 매개변수와 return이 전부 존재하는 함수가 있는가하면 

 

매개변수가 없고 return 값만 존재하는 경우도 있다

 

Case1 - 매개변수O return X

def test_func(a,b):
	print("this is {} and {}".format(a,b))
    
test_func(10,20)

>>> this is 10 and 20

 

이 형태는 함수 자체에서 매개변수만 받아 값을 진행하는 경우로

함수 자체가 return이 없기 때문에 함수를 호출만 하여 사용하게 된다.

 

 

Case2 - 매개변수X return O

 

def test_func():
	return 50*30
    
print(test_func())

>>> 1500

 

이와 같이 매개변수가 없지만 return 값이 있는 경우의 함수역시 만들 수 있다

확실히 케이스별로 용도에 나뉘어 사용될것이다.

 

 

Case3 - 매개변수X return X

def test_func():
	print("hi hello")
    
test_func()

>>> hi hello

그렇기에 매개변수와 return이 전부 없는 함수도 존재한다

모든 형태가 가능하다는 걸 알고 있으면 좋다.

 

이제 아래부터는 예제이다

 

예제모음1 - 사칙연산 프로그램 함수로 구현하기

def add(a,b):
    print(a+b)
def sub(a,b):
    print(a-b)
def mul(a,b):
    print(a*b)
def div(a,b):
    print(a/b)
while(1):

    print("menu >> 1(add) 2(sub) 3(mul) 4(div) exit(exit)")
    num=int(input(">>>"))
    a,b=map(int, input("needs 2 values >>> ").split())

    if(num == 1):
        add(a,b)
    elif(num == 2):
        sub(a,b)
    elif(num == 3):
        mul(a,b)
    elif(num == 4):
        div(a,b)
    elif(num=="exit"):
        break

while문에 True 값을 주어 무한 Loop를 돌게 했고

각각 값을 출력해주는 사칙연산 함수 4개를 만들어 선언 한 후

이를 적절히 호출해 사용했다

각각 1,2,3,4를 입력하면 덧셈,뺄셈,곱셈,나눗셈 exit를 입력하면 종료가 된다

그 후 메뉴로 들어가 두가지의 숫자를 공백으로 구분해 입력하면

각기 맞는 연산이 진행된 후 결과값이 출력되는데

 

확실히 이렇게 코드를 짜면 프로그램을 짠 것과 마찬가지지만 

간결함이 생명인 코딩에 있어 별로 예쁜 코딩이 아닌듯 하다 

그래서 함수 선언부를 모듈화 시킨 후 따로 빼준 후 조건문 부분 역시 함수에 넣어

간단하게 만들어주겠다

 

 

예제 1 코드 보완

# mod1.py
def add(a,b):
    return a+b
def sub(a,b):
    return a-b
def mul(a,b):
    return a*b
def div(a,b):
    return a/b


if __name__ == "__main__":
    print("main set mod1")

 

모듈로 사용될 mod1.py 파일이다 아래 main 코드는 

mod1.py가 직접 실행될때만 실행되도록 테스트 코드를 뒀고

우리는 mod1.py를 계산기 파일에서 import 한 후 사용하면 된다.

 

from mod1 import *

while(1):

    print("menu >> 1(add) 2(sub) 3(mul) 4(div) exit(exit)")
    num=int(input(">>>"))
    a,b=map(int, input("needs 2 values >>> ").split())

    if(num == 1):
        print(add(a,b))
    elif(num == 2):
        print(sub(a,b))
    elif(num == 3):
        print(mul(a,b))
    elif(num == 4):
        print(div(a,b))
    elif(num=="exit"):
        break

mod1을 import 해서 사용가능하다 

하지만 if문 역시 간결하지 않으니 한 차례 더 별도로 코드를 나눠준다

 

# update ver mod1.py
def add(a,b):
    return a+b
def sub(a,b):
    return a-b
def mul(a,b):
    return a*b
def div(a,b):
    return a/b
def result_num(num,a,b):
    if(num == 1):
        print(add(a,b))
    elif(num == 2):
        print(sub(a,b))
    elif(num == 3):
        print(mul(a,b))
    elif(num == 4):
        print(div(a,b))



if __name__ == "__main__":
    print("main set mod1")
# calculator.py
from mod1 import *

while(1):
    print("menu >> 1(add) 2(sub) 3(mul) 4(div) exit(exit)")
    num=int(input(">>>"))
    a,b=map(int, input("needs 2 values >>> ").split())
    result_num(num,a,b)

    if(num == "exit"):
        break

각각 함수가 담긴 모듈 파일과

계산 기능을 실행하는 main 함수로 기능할 calculator.py 파일을 분할해서 사용하니

main의 코드가 너무나 간결해서 보기 좋다.

 

이렇듯 함수는 기능의 집합적인 요소를 모아뒀고

그 함수를 따로 모아 외장 라이브러리처럼 배포해서 우리같은 일반 사용자들이 사용할 수 있다.

 

 

 

300x250

댓글