본문 바로가기
Python

[Python] 함수

by 기리의 개발로그 2024. 1. 17.

함수

파이썬 함수는 def 키워드롤 통해 선언한다.

def 함수이름(매개변수):
    <수행할 문장>
    ..
    return 결과값

일반적인 함수는 아래와 같이 입력값과 결과값을 가지고 있다.

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

a = add(3,4)
print(a)
7

입력값이 없는 함수는 다음과 같다.

def say():
    return 'Hi'

a = say()
print(a)
Hi

결과값이 없는 함수는 다음과 같다.

def add(a,b):
    print("%d, %d의 합은 %d입니다." % (a,b,a+b))

add(3,5)
3, 5의 합은 8입니다.

return 값이 없기 때문에 a 출력 시, None이 출력된다.

a = add(3,5)
3, 5의 합은 8입니다.
print(a)
None

함수 호출 시에 매개변수에 값을 지정할 수 있다.

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

result = add(a=3, b=5)
print(result)
8

이처럼 매개변수에 값을 지정하면 순서에 상관없이 사용할 수 있다.(a = 4, b = 5 전달)

result = add(b=5, a=4) 
print(result)
9

입력값을 모르는 경우는 다음과 같이 *매개변수로 사용한다.

def 함수이름(*매개변수):
    <수행할 문장>
    ...

아래와 같이 *args로 매개변수 선언시, 입력값 갯수에 제한이 없다.

def add_many(*args):
    result = 0
    for i in args:
            result += i
    return result


a = add_many(1,2)
print(a)

a = add_many(1,2,3)
print(a)

a = add_many(1,2,3,4)
print(a)
3

6

10

def add_mul(choice, *args):
    if choice == "add":
            result = 0
            for i in args:
                    result += i
    elif choice == "mul":
            result = 1
            for i in args:
                    result *= i
    return result

a = add_mul('add', 1,2,3,4,5)
print(a)

a = add_mul("mul", 1,2,3,4,5)
print(a)
15

120

키워드 파라미터


키워드 파라미터를 사용하기 위해서는 매개변수에 ** 를 붙여 사용한다.
매개변수는 딕셔너리가 되고 모든 key=value 형태의 결괏값이 그 딕셔너리에 저장되어 딕셔너리 형태로 출력된다.

def print_keyward(**kwargs):
    print(kwargs)

print_keyward(a=1)
print_keyward(name='food', age=3)
{'a': 1}
{'name': 'food', 'age': 3}

함수의 결과값은 언제나 1개이다. 아래의 경우 a + b, a * b 의 결과가 튜플로 반환되며, 각각의 변수에 담을 수 있다.

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

result = add_and_mul(3,4)
print(result)

result1, result2 = add_and_mul(3,4)
print(result1)
print(result2)
(7, 12)

7
12

매개변수를 미리 초기화하여 사용할 수 있다.

def say_myself(name, old, man=True):
    print("나의 이름은 %s 입니다." % name)
    print("나이는 %d살 입니다." % old)
    if man:
        print("남자입니다.")
    else:
        print("여자입니다.")

say_myself("양상길", 29)
say_myself("양상길", 29, True)
say_myself("여자", 29, False)
나의 이름은 양상길 입니다.
나이는 29살 입니다.
남자입니다.
나의 이름은 양상길 입니다.
나이는 29살 입니다.
남자입니다.
나의 이름은 여자 입니다.
나이는 29살 입니다.
여자입니다.

함수 호출 시 초기화된 man 매개변수에 인수를 입력하지 않으면 초기화 값을 갖게 된다.

또한, 초기값을 설정해 놓은 매개변수 뒤에 초기값을 설정해 놓지 않은 매개변수는 사용할 수 없다. 즉 항상 초기화시키고 싶은 변수를 맨 뒷쪽에 두어야 한다.

def say_myself(name, man=True, old):
    print("나의 이름은 %s 입니다." % name)
    print("나이는 %d살 입니다." % old)
    if man:
        print("남자입니다.")
    else:
        print("여자입니다.")

say_myself("양상길", 29)
SyntaxError: non-default argument follows default argument

def say_myself(name, old=23, man=True):
    print("나의 이름은 %s 입니다." % name)
    print("나이는 %d살 입니다." % old)
    if man:
        print("남자입니다.")
    else:
        print("여자입니다.")

say_myself("양상길")
나의 이름은 양상길 입니다.
나이는 1살 입니다.
남자입니다.
반응형

'Python' 카테고리의 다른 글

[Python] map() 함수  (139) 2024.01.19
[Python] 입출력 함수  (124) 2024.01.18
[Python] range() 함수  (120) 2024.01.16
[Python] 반복문  (81) 2024.01.15
[Python] 조건문  (55) 2024.01.12

댓글