파이썬 함수 퀴즈
각각의 문제 + 정답 + 상세풀이 + 예시 코드

OX 10문항 + 5지선다형 10문항 학습용 HTML

OX 1

문제

파이썬에서 함수를 정의할 때 function 키워드를 사용한다.

정답

X

상세 풀이

파이썬은 함수를 만들 때 function이 아니라 def 키워드를 사용한다. def는 define의 줄임말로, 함수 이름과 매개변수 뒤에 콜론(:)을 붙이고 들여쓰기한 코드 블록을 작성한다.

핵심 정리
function 키워드는 파이썬 문법이 아니므로 오류가 납니다. 올바른 함수 정의 키워드는 def입니다.

예시 코드

def hello():
    print('안녕하세요')

hello()

출력 결과

안녕하세요
OX 2

문제

함수에 return 문이 없으면 아무 값도 반환하지 않는다. 즉 None을 반환한다.

정답

O

상세 풀이

함수에서 return을 쓰지 않으면 파이썬은 자동으로 None을 반환한다. print()로 화면에 출력하는 것과 값을 반환하는 것은 다르다.

핵심 정리
함수가 계산 결과를 돌려주려면 return이 필요합니다. return이 없으면 변수에 저장되는 값은 None입니다.

예시 코드

def greet():
    print('반갑습니다')

result = greet()
print(result)

출력 결과

반갑습니다
None
OX 3

문제

*args는 정해지지 않은 수의 키워드 인자를 딕셔너리 형태로 받는다.

정답

X

상세 풀이

*args는 여러 개의 위치 인자를 튜플 형태로 받는다. 키워드 인자를 딕셔너리 형태로 받는 것은 **kwargs이다.

핵심 정리
값만 여러 개 넘기면 *args가 튜플로 받습니다. 이름=값 형태로 넘기면 **kwargs가 딕셔너리로 받습니다.

예시 코드

def show(*args):
    print(args)

show(10, 20, 30)

출력 결과

(10, 20, 30)
OX 4

문제

람다(lambda) 표현식은 여러 줄의 코드를 포함할 수 있는 익명 함수이다.

정답

X

상세 풀이

lambda는 이름 없이 간단한 함수를 만들 때 사용하지만, 한 줄짜리 표현식만 쓸 수 있다. 여러 문장이나 복잡한 흐름은 def 함수로 작성해야 한다.

핵심 정리
간단한 계산은 lambda가 편하지만, 조건문 여러 줄이나 반복문 본문은 일반 함수가 더 적절합니다.

예시 코드

double = lambda x: x * 2

print(double(5))

출력 결과

10
OX 5

문제

함수 내에서 선언된 변수인 지역 변수는 함수 밖에서도 접근할 수 있다.

정답

X

상세 풀이

지역 변수는 함수가 실행되는 동안 함수 내부에서만 사용할 수 있다. 함수 밖에서 같은 이름을 사용하려면 별도의 전역 변수이거나 return으로 값을 받아야 한다.

핵심 정리
함수 안에서 만든 임시 계산 값은 함수 밖으로 자동으로 나오지 않습니다. 필요하면 return으로 돌려받아야 합니다.

예시 코드

def make_score():
    score = 100
    return score

result = make_score()
print(result)

출력 결과

100
OX 6

문제

def my_func(a, b=10): 와 같이 함수 정의 시 b는 기본 매개변수이다.

정답

O

상세 풀이

매개변수에 미리 값을 지정하면 기본 매개변수가 된다. 호출할 때 해당 인자를 생략하면 기본값이 사용되고, 값을 전달하면 전달한 값이 사용된다.

핵심 정리
인사말, 할인율, 기본 점수처럼 자주 쓰는 기본값을 정해 둘 때 유용합니다.

예시 코드

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

print(add(5))
print(add(5, 3))

출력 결과

15
8
OX 7

문제

**kwargs는 정해지지 않은 수의 위치 인자를 튜플 형태로 받는다.

정답

X

상세 풀이

**kwargs는 키워드 인자를 딕셔너리 형태로 받는다. 위치 인자를 튜플로 받는 것은 *args이다.

핵심 정리
학생 정보처럼 이름=값 형태의 데이터를 여러 개 받을 때 **kwargs를 사용할 수 있습니다.

예시 코드

def profile(**kwargs):
    print(kwargs)

profile(name='민수', grade=1)

출력 결과

{'name': '민수', 'grade': 1}
OX 8

문제

재귀 함수는 자기 자신을 다시 호출하는 함수이다.

정답

O

상세 풀이

재귀 함수는 함수 내부에서 자기 자신을 호출한다. 반드시 멈추는 조건이 있어야 무한 호출을 피할 수 있다.

핵심 정리
팩토리얼, 피보나치, 폴더 탐색처럼 같은 구조가 반복되는 문제에 사용할 수 있습니다.

예시 코드

def count_down(n):
    if n == 0:
        print('끝')
    else:
        print(n)
        count_down(n - 1)

count_down(3)

출력 결과

3
2
1
끝
OX 9

문제

파이썬에서 함수는 다른 함수의 인자로 전달될 수 있다.

정답

O

상세 풀이

파이썬에서 함수는 일급 객체이다. 따라서 변수에 저장하거나, 다른 함수의 인자로 넘기거나, 함수의 반환값으로 사용할 수 있다.

핵심 정리
계산 방법을 함수로 전달하면 같은 처리 틀에서 다양한 동작을 선택할 수 있습니다.

예시 코드

def apply(func, x):
    return func(x)

def square(n):
    return n * n

print(apply(square, 4))

출력 결과

16
OX 10

문제

yield 키워드를 사용하는 함수는 제너레이터가 된다.

정답

O

상세 풀이

yield를 사용하면 함수는 한 번에 모든 값을 반환하지 않고, 필요할 때마다 값을 하나씩 만들어 내는 제너레이터가 된다.

핵심 정리
큰 데이터나 순차적으로 값을 만들어야 하는 상황에서 메모리를 절약할 수 있습니다.

예시 코드

def nums():
    yield 1
    yield 2

g = nums()
print(next(g))
print(next(g))

출력 결과

1
2
5지선다 11

문제

다음 중 함수를 정의하는 올바른 키워드는 무엇인가?

정답

def

상세 풀이

파이썬에서 함수 정의는 def 함수이름(매개변수): 형식으로 작성한다. func, define, function, fun은 파이썬 함수 정의 키워드가 아니다.

핵심 정리
정답은 def입니다.

예시 코드

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

print(add(2, 3))

출력 결과

5
5지선다 12

문제

def greet(name="Guest"): print(name) 함수를 greet()으로 호출했을 때 출력되는 것은?

정답

Guest

상세 풀이

name 매개변수의 기본값이 Guest로 지정되어 있으므로, 인자를 주지 않고 greet()을 호출하면 Guest가 출력된다.

핵심 정리
기본 인자는 생략 가능한 값입니다.

예시 코드

def greet(name='Guest'):
    print(name)

greet()
greet('철수')

출력 결과

Guest
철수
5지선다 13

문제

가변 인자 리스트를 받아 모든 인자를 튜플로 묶는 매개변수는?

정답

*args

상세 풀이

*args는 개수가 정해지지 않은 위치 인자들을 하나의 튜플로 묶는다. 여러 숫자를 받아 합계를 구하는 함수 등에 사용할 수 있다.

핵심 정리
정답은 *args입니다.

예시 코드

def total(*args):
    print(args)
    print(sum(args))

total(1, 2, 3, 4)

출력 결과

(1, 2, 3, 4)
10
5지선다 14

문제

result = list(map(lambda x: x * 2, [1, 2, 3])) 의 실행 결과는?

정답

[2, 4, 6]

상세 풀이

lambda x: x * 2는 입력값을 2배로 만든다. map은 리스트의 각 원소 1, 2, 3에 이 함수를 적용하므로 결과는 2, 4, 6이다.

핵심 정리
map은 모든 요소에 같은 함수를 적용합니다.

예시 코드

result = list(map(lambda x: x * 2, [1, 2, 3]))
print(result)

출력 결과

[2, 4, 6]
5지선다 15

문제

함수 외부의 변수를 함수 내부에서 수정하려고 할 때 사용하는 키워드는?

정답

global

상세 풀이

함수 내부에서 전역 변수의 값을 직접 바꾸려면 global 키워드를 사용한다. 단, 전역 변수 수정은 코드 이해를 어렵게 할 수 있어 꼭 필요할 때만 사용한다.

핵심 정리
전역 카운터 값을 증가시키는 경우에 사용할 수 있습니다.

예시 코드

count = 0

def up():
    global count
    count += 1

up()
print(count)

출력 결과

1
5지선다 16

문제

def func(a, b): return a+b 함수를 func(b=5, a=3)처럼 호출하는 방식은?

정답

키워드 인수

상세 풀이

매개변수 이름을 직접 지정하여 값을 전달하는 방식을 키워드 인수라고 한다. 순서가 바뀌어도 이름을 기준으로 값이 전달된다.

핵심 정리
인자가 많을 때 의미를 분명하게 표현할 수 있습니다.

예시 코드

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

print(func(b=5, a=3))

출력 결과

8
5지선다 17

문제

filter(function, iterable)에 대한 설명으로 올바른 것은?

정답

function의 반환 값이 True인 것만 모아서 반환

상세 풀이

filter는 조건 함수가 True를 반환하는 요소만 남긴다. 결과는 filter 객체이므로 보통 list()로 변환해 확인한다.

핵심 정리
짝수만 고르기, 합격자만 고르기 같은 필터링에 사용합니다.

예시 코드

nums = [1, 2, 3, 4, 5]
evens = list(filter(lambda x: x % 2 == 0, nums))
print(evens)

출력 결과

[2, 4]
5지선다 18

문제

함수의 설명 Docstring을 작성하는 올바른 방법은?

정답

"""설명"""

상세 풀이

Docstring은 함수 바로 아래에 큰따옴표 세 개 또는 작은따옴표 세 개로 작성하는 공식 설명 문자열이다. help()나 __doc__으로 확인할 수 있다.

핵심 정리
주석보다 공식 문서 설명에 가깝습니다.

예시 코드

def add(a, b):
    '''두 수를 더해 반환합니다.'''
    return a + b

print(add.__doc__)

출력 결과

두 수를 더해 반환합니다.
5지선다 19

문제

기존 함수의 코드를 수정하지 않고 기능을 추가할 때 사용하는 디자인 패턴은?

정답

데코레이터

상세 풀이

데코레이터는 함수를 감싸서 실행 전후에 새로운 기능을 추가한다. 기존 함수 코드를 직접 수정하지 않고 로깅, 권한 확인, 실행 시간 측정 등을 붙일 수 있다.

핵심 정리
함수 실행 전후에 안내 문구를 출력하는 데코레이터를 만들 수 있습니다.

예시 코드

def deco(func):
    def wrapper():
        print('시작')
        func()
        print('끝')
    return wrapper

@deco
def hello():
    print('안녕')

hello()

출력 결과

시작
안녕
끝
5지선다 20

문제

def my_gen(): yield 1; yield 2; g = my_gen(); print(next(g)) 의 실행 결과는?

정답

1

상세 풀이

my_gen은 제너레이터 함수이다. g = my_gen()으로 제너레이터 객체를 만들고 next(g)를 처음 호출하면 첫 번째 yield 값인 1이 반환된다.

핵심 정리
next를 다시 호출하면 두 번째 yield 값 2가 나옵니다.

예시 코드

def my_gen():
    yield 1
    yield 2

g = my_gen()
print(next(g))

출력 결과

1