python) 함수

jun_legend·2021년 5월 23일
0

Python-Syntax

목록 보기
4/7
post-thumbnail

"함수"

입력값을 가지고 어떤 일을 수행한 다음 그 결과물을 내어 놓는 것


1) 함수의 구조

def 함수명 ( ):
__수행할 문장
__
수행할 문장


2) 일반적인 함수

def 함수명(매개변수):
    수행할 문장
    수행할 문장
    return 결괏값
  • return : 함수의 결괏값을 돌려주는 명령어
  • 매개변수 : 함수에 입력으로 전달된 값을 받는 변수
  • 인수 : 함수를 호출할 때 전달하는 입력값
def add(a, b):
    return a+b
print(add(3, 4)
  • 매개변수 : a, b
  • 인수 : 3, 4

3) 입력 값이 없는 함수

def say():
    return 'Hi'

4) 결괏값이 없는 함수

def add(a, b):
    print("{}와 {}의 합은 {}입니다.".format(a, b, a+b))
  • print 문은 함수의 구성요소 중 하나인 수행할 문장에 해당된다.
  • 결괏값은 return 명령어로만 돌려 받을 수 있다.

5) 입력값도 결괏값도 없는 함수

def say():
    print('Hi')

6) 매개변수 지정하여 호출하기

def add(a, b):
    return a+b
result = add(a=3, b=7)
print(result)
실행결과> 10
result = (b=7, a=3)  # b=7 이 먼저 입력됐지만 a에 3이, b에 7이 입력된다. 
print(result)
실행결과> 10
  • 매개변수를 지정하면 변수 입력 순서에 상관없이 사용할 수 있다.

7) 입력값이 몇 개인지 모르는 여러 개의 입력값을 받는 함수

def 함수명(*매개변수):
    수행할 문장
def add_many(*args):
    result = 0
    for i in args:
        result += i
    return result
result = add_many(1, 2, 3)
print(result)
실행결과> 6
result = add_many(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(result)
실행결과> 55
  • *args : 여러 개의 입력값
    (임의로 정한 변수 이름이지만 관례적으로 사용되고 있음)
  • 매개변수 앞에 * 을 붙이면 입력값을 전부 모아서 튜플로 만들어준다.

8) 1개의 입력값과 여러 개의 입력값(*args)을 받는 함수

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 
result = add_mul('add', 1, 2, 3, 4, 5)
print(result)
실행결과> 15
result = add_mul('mul', 1, 2, 3, 4, 5)
print(result)
실행결과> 120
  • 1개의 입력값과 여러개의 입력값을 함께 매개변수로 받을 수 있다.

8-1) 키워드 파라미터 (kwargs)

def print_kwargs(**kwargs):
    print(kwargs)
print_kwargs(a=1)
실행결과> {a: 1}
print_kwargs('name'='foo', 'age'=3)
실행결과> {'name': 'foo', 'age': 3}
  • 매개변수 앞에 **을 붙이면 매개변수 kwargs 는 딕셔너리가 되고
  • 모든 key=value 형태의 결괏값이 그 딕셔너리에 저장된다.

9) return 으로 함수 빠져 나가기

def say_nick(nick):
    if nick == '바보':
        return
    print("별명은 {}입니다.".format(nick)) 
  • 특정한 조건을 만족시킬 때 결괏값이 없는 return 을 사용하면 함수를 빠져 나갈 수 있다.

10) 매개변수에 초깃값을 설정해둔 함수

def say_myself(name, old, man=True):
    print("내 이름은 {}입니다.".format(name))
    print("나이는 {}살입니다.".format(old))
    if man:
        print("남자입니다.")
    else:
        print("여자입니다.")
say_myself('토니스타크', 53)  # man 변수에 입력값을 주지않음 
say_myself('토니스타크', 53, True)
실행결과> 
내 이름은 토니스타크입니다.
나이는 53입니다.
남자입니다.
  • name 변수에는 '토니스타크', old 변수에는 53 이 대입된다.
  • man 변수에는 입력값을 주지 않았지만 초깃값 True 가 대입된다.
def say_myself(name, man=True, old):
    print("내 이름은 {}입니다.".format(name))
    print("나이는 {}살입니다.".format(old))
    if man:
        print("남자입니다.")
    else:
        print("여자입니다.")
say_myself('토니스타크', 53)
실행결과>
SyntaxError: non-default argument follows default argument 
  • name 변수에는 '토니스타크' 가 대입된다.
  • 53 을 old 변수에 대입해야 할지, man 변수에 대입해야 할지 알 수 없다.
  • 초깃값을 설정해둔 매개변수는 초깃값을 설정해두지 않은 매개변수 뒤에 둬야한다.

0개의 댓글