Python (3) - 함수
Function
Function이란?
수학적인 의미의 함수와 개념은 비슷하지만 역할이 다르다.
- input이 들어와서 output이 정해진 규칙에 따라 나온다는 개념은 같지만, 프로그램에서의 하나의 함수는 하나의 기능을 나타낸다.
하나의 기능 : 입력받은 2개의 숫자를 더한다, 들어온 텍스트를 정제한다, 받은 이미지를 greyscale로 변경한다.
- 정확하게 함수는 특정 기능을 구현한 코드 묶음이다.
하나의 기능을 구현하기 위한 코드들을 함수라고 부른다.
-
def 함수이름(param1, param2, … ):
return - 함수를 쓰는 이유는 재사용성 때문이다.
함수를 사용하는 가장 중요한 이유는 재사용성 때문이다. Reusability라고 하며, 똑같은 구조의 코드가 반복되는 것을 피하기 위해 사용된다. 똑같은 구조의 코드는 보통 한 가지의 기능 단위로 묶이게 되며, 이 기능 단위를 코드로 묶어서 함수로 만든다.
Python Function Definition
def add(a, b):
c = a + b
return c
add(10, 11)
21
def sub(a, b):
c = a - b
return c
def mul(a, b):
return a * b
def div(a, b):
if b ==0:
return 0
return a / b
a = 10
b = 0
print("Sub :", sub(a, b))
print("Mul :", mul(a, b))
print("Div :", sub(a, b))
Sub : 10
Mul : 0
Div : 10
함수의 다양한 형태
함수 parameter와 return이 모두 존재
def add(a, b):
return a + b
함수 parameter는 없고 return이 존재
def get_data():
data = pd.read_csv("test.csv")
return data
함수 parameter는 있지만 return이 없음
def print_name(name):
print(name)
def save_data(path, data):
data.to_csv(path)
함수 parameter와 retrun이 모두 없음
def say_hi():
print("Hi!")
def save_txt():
with open("test.txt", 'w') as f:
f.write(txt)
parameter의 갯수를 모를 경우
def add_many(*args): # *(asterisk)를 앞에 붙이는 것으로 여러개의 parameter를 받아서 tuple로 변환하여 준다.
#print(args, type(args))
total = 0
for num in args:
total += num
return total
add_many(1, 2, 3)
6
parameter가 너무 많아서 몇 개만 입력 parameter로 넣고 싶을 땐 어떻게 해야할까?
-
아래는 scikit-learn 라이브러리에 있는 logistic regression 모델의 init 함수 코드이다.
-
parameter가 너무 많아서, 다 외울수도 없다. 이럴 땐 default parameter를 지정해놓고, 필요한 parameter만 입력받는다.
-
이렇게 정의되는 함수의 parameter를 keyword parameter 라고 한다.
def default_add10(a, b=10):
return a + b
default_add10(5)
15
파라미터에 대해 조금 더 알아봅시다!
- 함수에서 사용되는 변수들에게는 효력 범위와 수명이 있다.
효력 범위 : range, 수명 : lifetime
# 함수의 파라미터 변수 이름과, 함수를 호출하는 argument의 이름이 같은 경우
def full_name(a ,b):
# local variable, 지역 변수
c = a + b # local
print("MY NAME IS ", c)
# return name
last = "HONG"
First = "GILDONG"
# name = "kim" # global
# #name = change_name(name)
full_name(last, First)
MY NAME IS HONGGILDONG
Lambda 함수
Lambda Expression
- 굉장히 간단한 함수가 있는 경우, 한 줄짜리 함수로 간편하게 사용할 수 있다.
inline function, def라고 하는 명령어 없이 간단하게 정의해서 사용할 수 있다.
- 이런 함수를 Lambda 함수라고 하며, lambda 함수와 반복문을 통해 함수의 정의없이 다양한 프로그래밍이 가능하다.
def add(a, b):
return a+b
# a, b는 input parameter들, a+b는 return되는 output parameter.
f = lambda a, b: a+b
print(add(3, 5))
print(f(3, 5))
8
8
def return_length(s):
return len(s)
lenf = lambda s: len(s)
print(return_length("abcde"))
print(lenf("abcde"))
5
5
# 리스트의 원소들을 원소들의 길이에 따라 정렬
strings = ['yoon', 'kim', 'jessica', 'jeong']
strings.sort(key=lambda s: len(s))
# sort(*, key=None, reverse=False) 키로 지정된 값에 의해 요소들이 한번 계산되고 그 결과를 바탕으로 정렬
strings
['kim', 'yoon', 'jeong', 'jessica']
Python 내장함수
# 수학 계산
import math
print(abs(-3)) # 절대값
print(math.ceil(3.5)) # 올림
print(math.floor(3.3)) # 내림
print(round(3.6)) # 반올림
print(math.sin(1)) # sin
print(math.cos(1)) # cos
3
4
3
4
0.8414709848078965
0.5403023058681397
# 복권 숫자 만들기
import random
random.sample(range(1, 46), 7)
[39, 28, 23, 15, 32, 44, 26]
# 다양한 사전
from collections import defaultdict
from collections import OrderedDict
D = defaultdict(int)
D2 = OrderedDict()
D2['z'] = 26
D2['a'] = 1
D2['c'] = 3
D2['d'] = 5
D2['j'] = 14
D2['b'] = 2
D2
OrderedDict([('z', 26), ('a', 1), ('c', 3), ('d', 5), ('j', 14), ('b', 2)])
Reference
- 이 포스트는 SeSAC 인공지능 SW 개발자 양성 과정 - 나예진 강사님의 강의내용을 정리한 것입니다.
댓글남기기