Python/Function

Function (함수)

youngflowey 2019. 11. 26. 20:54

2019-11-14

 

a = [1,2,3,4]

mySum = 0
for i in a:
    mySum +=i
print(mySum)

파이썬의 내장함수를 이용하면 한번에 해결 가능

mySum = sum(a)   # 내장함수
print(mySum)

숫자를 입력받아서                                => 단위기능으로 간주 => 함수
해당숫자를 모두 더한후,                         => 단위기능으로 간주 =>  함수
'결과값은 : xx입니다' 형식으로 출력           => 함수

 

입력, 처리, 출력

 

처리 <- 여러가지 단위기능으로 분리시킬 수 있다

기능들을 내가 임의로 분리시켜서 코드를 작성할 수 있다

원래 한방에 쭉 짜야하는데 기능을 계속 쪼개서 더이상 자를 수 없는 것 : 단위기능
단위기능 싹다 모으면 우리가 원하는 함수

 

이렇게 함수기반의 프로그램 방식을 절차적 프로그래밍(procidural programming)

 

python에서 함수는 크게 2가지로 구분

  • 내장함수( sum( ) )
  • 사용자 정의함수( user define 함수 )

사용자 정의함수를 만드는 keyword는 def

 

함수이름은 소문자로 시작 (관용적으로)

 

함수의 정의(definition) => 함수의 이름, 인자형태, 인자개수 + 기능구현

                                    정의를 완전히 끝내주는 것

함수의 선언(declaration) => 함수의 이름, 인자형태, 인자개수

                                     하는일 아직 정해지지 않음, 

                                     그냥 이런 함수가 있어. 나중에 내가 쓸게

 

def mySum(a,b,c):    # 입력을 3개 받겠다
    # 함수의 기능을 구현해요
    total = a + b + c
    return total
# 이런함수가 있어
# 호출이 됐을때 함수가 실행되는거임

 

input

입력받는 내장함수, 무조건 str로 받아요

inputValue = input()  # 입력받는 내장함수, 무조건 str로 받아요

# 숫자 3개를 받아보아요!
# input 값에 "100 200 300"

print("입력받은 값은 : {}".format(inputValue))

# "100 200 300" 형태
# 나눠줘야해 : split

var1 = inputValue.split(" ")    # 값을 분리해서 list로 리턴
# input 받은 자료를 공백으로 분리하겠다
# 값 3개 받을때 가장 만만한 구조 = list

result = mySum(int(var1[0]),int(var1[1]),int(var1[2]))

print("최종결과는 {}".format(result))


def mySum2(*args):     # args가 tuple로 간주
                        # args => (10,20,30,40)
                        # 순서 있고 list랑 똑같아, but 값을 변형시킬수없음 : tuple
    # 전달받은 모든 값들을 더해서 리턴
    # 값의 개수가 정해지지 않음
    # * : 입력의 개수에 상관하지 않겠다
    k = 0
    for i in range(len(args)):
        k += args[i]
    return k
    
total = mySum2(10,20,30,40)
print("최종결과 : {}".format(total))
total = mySum2(30,40,60,90)
print("최종결과 : {}".format(total))

코드의 재사용성을 가장 잘 활용하는 방법 : 함수(function)

 

함수를 하나 정의해요

- 숫자 2개 받아서 두개의 합과 두개의 곱을 리턴할거에요!
- tuple을 이용해서 마치 여러개의 값이 리턴되는것처럼 사용할 수 있어요!
- tuple : 오직 tuple만 괄호 생략 가능 

 

def multi_process(x,y):
    result1 = x + y
    result2 = x * y
    # return (result1, result2)  원래 이렇게 써야하는데 tuple이라 생략할 수 있음
    return result1, result2
    # 파이썬 최종적인값 1개만 가능
    # but tuple이라 괄호가 생략되어있는거임
    # 실제로는 tuple을 return한 거임

a,b = multi_process(100,200)

print(a)

사용자 정의 함수 만들기

default parameter

def mySum(a,b,c=100):   # 마지막 parameter의 default 값을 정해줄 수 있어
    return a+b+c       # 맨 마지막만 가능!


total = mySum(1,2,3);print(total)    # 6
total = mySum(1,2)  ;print(total)    # 103