Q1.
['Harry', 'Ron', 'Hermione'] 리스트를 반환하는 good() 함수를 정의해보자.
A.
def good():
return ['Harry', 'Ron', 'Hermione']
g = good()
print(g) # ['Harry', 'Ron', 'Hermione']
Q2.
range(10)의 홀수를 반환하는 get_odds 제너레이터 함수를 정의해보자.
for문으로 반환된 세 번째 홀수를 찾아서 출력한다.
A. yield문으로 값을 반환한다.(제네레이터 객체)
def get_odds(first=0, last=10, step=1):
num = first
while num < last:
if num % 2 == 1:
yield num
num += step
odds = get_odds(last=10)
print(odds) # <generator object get_odds at 0x73ff7fe94350>
for n in odds:
print(n)
"""
1
3
5
7
9
"""
Q3.
어떤 함수가 호출되면 'start'를, 끝나면 'end'를 출력하는 test 데커레이터를 정의해보자.
A. TEST, 디버깅에 쓰인다는 데커레이터..뭔가 어렵다. 나중에 꼭 복습
def test(func): # 인자로 함수를 바는다.
def new_func(*args, **kwargs): #func 안의 인수값까지.
print("start")
func(*args, **kwargs) # 가져온 func 함수 진행.
print("end")
return new_func # new_func 함수를 반환한다.
@test
def say_my_name(name=" "):
print(f"I 'am {name}")
say_my_name("DooNas")
"""
start
I 'am DooNas
end
"""
Q4.
OopsException 예외를 정의해보자. 이 예외를 발생시켜보자. 그리고 이 예외를 잡아서
'Caught an oops'를 출력하는 코드를 작성해보자.
A. raise 메서드를 활용해서 임의로 에러를 유발할 수 있다.
def check_value(value):
if value < 0:
raise OopException("값은 0 이상이어야 합니다.")
else:
print("적절한 값입니다.")
try:
check_value(-1)
except OopException:
print("Caught an oops")