Function (함수)
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