함수

  • 입력값을 가지고 어떤 일을 수행한 다음에 그 결과물을 내는것
  • 반복되는 부분이 있을 경우 반복되는 부분을 한 뭉치로 묶어놓는 기능

함수 정의

  • def는 함수를 만들 때 사용하는 예약어임
  • 함수명은 만드는 사람이 임의로 만들 수 있음
  • 함수명 뒤 괄호안에 매개변수는 이 함수에 입력으로 전달되는 값을 받는 변수임
  • 함수 선언이 끝났으면, 함수 내에서 수행할 문장을 입력
def 함수이름(매개변수):
    # 실행할 문장
    pass

def say_hello():
    print("Hello")

say_hello()

Hello

매개변수와 반환값

  • 매개변수에 접근하기 위해서는 함수를 호출할 때 ()안에 인자를 넣어주면 됨
  • 반환값 return 은 함수에서 입력값을 받아 어떤 처리를 하여 반환하는 값
  • 매개변수의 개수와 함수를 호출할 때 인자 개수가 맞지 않으면 오류가 생김
def hello(name):
    print(f"hello {name}!")

hello("Mr.Kim")

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

add(3, 4)
hello Mr.Kim!





'\ndef sub(a, b, c):\n    result = c-a-b\n    return result\n\nsub(3, 4)\n'

기본값 매개변수

  • 함수의 매개변수에는 기본값을 설정할 수 있음
  • 기본값 매개변수는 항상 맨 뒤에 있어야 함
  • 함수를 호출할 때 인자값을 할당하면 기본값이 설정한 인자값으로 덮어쓰기됨
def profile(name, age=23, country="서울"):
    return f"이름: {name}, 나이: {age}, 사는곳: {country}"

print(profile("Mr.kim"))
print(profile("Mr.D", 30, "부산"))
이름: Mr.kim, 나이: 23, 사는곳: 서울
이름: Mr.D, 나이: 30, 사는곳: 부산

키워드 매개변수

  • 함수를 호출할 때 인자에 직접 값을 할당할 수 있음
def keyword1(a, b, c):
    print(a, b, c)
    
keyword1(b=3, a=2, c=1)

def keyword2(a, b, c = 1):
    print(a+b+c)
    
keyword2(b = 10, a = 20)
2 3 1
31

가변 매개변수

  • 매개변수가 몇 개인지 알 수 없을때 사용
  • 변수이름 앞에 *를 붙여서 사용
  • 가변 매개변수를 사용하게 되면 값을 모아서 튜플로 변환
def args(*args):
    print(args)
    
args(1, 2, 3, 4, 5)

def add(*num):
    result = 0
    for i in num:
        result += i
    return result

print(add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))

def profile(name, age, *food):
    print(name, age, food)

profile("Mr.kim", 29, "kimchi", "Pizza", "chicken")
(1, 2, 3, 4, 5)
55
Mr.kim 29 ('kimchi', 'Pizza', 'chicken')

가변 키워드 매개변수

  • 매개변수의 이름을 따로 지정하지않고 사용
  • 함수를 호출할 때 인자에 이름을 지정해서 호출하면 이름과 값이 딕셔너리 형태로 반환
def keyword_args(**kwargs):
    print(kwargs)

keyword_args(a = 3, b = 10, c = "A", d = "B")

def args_kwargs(*args, **kwargs):
    print(args, kwargs)
    
args_kwargs(1, 2, 3, c = "A", d = "B")
{'a': 3, 'b': 10, 'c': 'A', 'd': 'B'}
(1, 2, 3) {'c': 'A', 'd': 'B'}

지역변수와 전역변수

var = "Global var"
def var_test():
    var = "region variable"
    return var

print(var)
print(var_test())


def func1():
    global var  # global: 함수 내에서 전역변수를 사용하기 위한 예약어
    var = "a"
    print(var)

func1()

def func2():
    print(var)
    
func2()
Global var
region variable
a
a

내부 함수

  • 함수안에 함수가 존재하는 구조
  • 내부 함수는 외부에서 호출 불가
def func1(a, b):
    def func2(num1, num2):
        return num1+num2
    return func2(a, b)

print(func1(10, 20))
# 1. func1(a, b)에 10, 20이 할당
# 2. func2(num1, num2)에 10, 20이 할당
# 3. func2()함수를 호출하면 10, 20이 더해짐
# 4. func1()함수의 return 값으로 func2()함수 호출
# 5. 30출력
30

재귀 함수

  • 함수가 자기 자신을 다시 호출하는 함수
def count(n):
    if n >= 1:
        print(n)
        count(n-1)
    else:
        pass

count(10)

def factorial(n):
    if n > 1:
        return n * factorial(n-1)
    else:
        return True

print(factorial(5))
10
9
8
7
6
5
4
3
2
1
120

카테고리:

업데이트:

댓글남기기