Skip to content

함수

함수 란

특정 기능을 수행해주는 코드의 모음
한번 정의하면 같은 기능이 필요할 때 매번 똑같은 코드를 작성할 필요 없고, 필요 시에만 호출 가능

함수 선언 방법

입력값과 출력값 모두 있는 경우

일반적인 함수의 경우 입력값 (변수) 와 출력값 (결과) 를 가지고 있음 (return 은 while문의 break 처럼도 사용 가능)

def 함수명(변수):
    코드
    코드
    return 결과

입력값은 없고 출력값만 있는 경우

def weather() :
    return "sunny"

print(weather())
>>>> sunny

입력값만 있고 출력값은 없는 경우

def weather(a) :
    a = "sunny"

print(weather(1))
>>> None

# 출력값 (return) 이 없기에 None 이 출력됨

입력값과 출력값 모두 없는 경우

def weather() :
    print("sunny")

print(weather())
>>> sunny
>>> None
# print(weather()) 에서 print("sunny") 코드로 인해 sunny 가 출력되었으나 return 이 없기에 두번째로 None 이 출력됨

입력값의 갯수가 정해져 있지 않은 경우

def add(*args) :
    b = 0
    for x in args :
        b += x
    return b

print(add(1, 2, 3))
>>> 6
print(add(1, 2, 3, 4, 5))
>>> 15

# *args 의 타입은 튜플이며 positional argument 라고 함
def test(**kwargs) :
    inst_dict = {}
    for k, v in kargs.items() :
        inst_dict[k] = v
    return inst_dict

print(test(a=1, b=2, c=3))
>>> {'a': 1, 'b': 2, 'c': 3}
print(test(d=4, e=5, f=6, g=7, h=8, i=9))
>>> {'d': 4, 'e': 5, 'f': 6, 'g': 7, 'h': 8, 'i': 9}

# **kwargs 의 타입은 딕셔너리이며 keyword argument 라고 함

결과값은 항상 하나

def add_and_mul(a,b):
    return a+b, a*b

print(add_and_mul(2, 3))
>>> (5, 6)
하나의 튜플 값으로 반환

함수 밖의 변수를 사용하고 싶을 때

a = 1

def test(b) :
    global a
    return a+b

print(test(2))
>>> 3

parmeter vs argument

parameter : 함수 선언할 때 내부에 사용되는 값

argument : 함수 사용할 때 사용되는 값

def function(number):    # parameter : number
    return number

function(1)    # argument : 1

lambda

def 와 동일하나 함수를 한줄로 선언하거나 def 를 사용할 수 없을 때 사용됨 (return 이 없어도 결과값 반환됨)

mul = lambda a, b : a*b

print(mul(2, 3))
>>> 6