연습문제 풀이.
1. 함수에서 지역변수와 전역변수에 대한 설명이 아닌 것은?
① 지역 변수는 함수 내부에서만 사용된다.
② 전역 변수는 함수 외부의 전체 코드에서 선언된 변수다.
③ 지역 변수는 함수 외부에서 참조할 수 있다.
④ 전역 변수는 함수 내부에서 참조할 수 있다.
⑤ 전역 변수와 지역 변수의 이름이 같을 때, 이를 구분해주기 위해 'global'이라는 명령어를 사용한다
- 답 및 해설
③ 지역 변수는 함수 외부에서 참조할 수 있다.
=> 지역변수는 함수 외부가 아닌 내부에서 참조할 수 있다.
2. 아래 코드의 실행 결과는?
def test(k):
print('input is', k)
k=100
test(k)
- 답 및 해설
# 입력
def test(k):
print('input is', k)
k=100
test(k)
# 출력
input is 100
=> 함수 외부에서 선언된 전역변수 k가 함수 test()로 들어가고, 함수를 실행하면 함수 내부의 print문이 실행된다. k값은 100이므로 실행 결과는 input is 100
3. 아래 코드의 실행 결과는?
def counter(*args):
count = len(args)
return count
print(counter(['test', 'hello', 'oooo']))
- 답 및 해설
# 입력
def counter(*args):
count = len(args)
return count
print(counter(['test', 'hello', 'oooo']))
# 출력
1
=> *는 asterisk로, 가변 인수다. 함수를 보면 입력된 인수를 한데 묶어서 모두 args라는 변수에 할당하는 형식이지만, 입력된 인수는 'test', 'hello', 'oooo' 문자열 데이터 3개가 아닌 ['test, 'hello', 'oooo] list형 데이터 1개다. 즉 args의 길이는 1이고, 반환되는 값은 1이다.
4. 아래 코드의 실행 결과는?
def f(x):
y=x
x=7
return y*x
x=4
print(f(3))
print(x)
- 답 및 해설
# 입력
def f(x):
y=x
x=7
return y*x
x=4
print(f(3))
print(x)
# 출력
21
4
=> 맨 처음 실행되는 코드는 x=4이다. x에 4라는 정수가 할당된다.
그 후, 인수 x를 3으로 해서 f(x)가 실행된다.
y에는 x값, 즉 3이 할당되어 y의 값은 3이 되고, 함수 내에서 x에 7이 할당되어 최종적으로 y는 3, x는 7이 된다. 즉 반환값은 7*3 = 21
마지막으로 print(x)가 실행되는데, 함수 내의 x는 지역변수이므로 함수 밖에 영향을 미치지 못한다. 즉 함수 밖의 x는 여전히 4.
최종 출력되는 값은 21 // 4
7. 아래 코드의 실행 결과는?
def print_hi():
print('hi')
- 답 및 해설
# 입력
def print_hi():
print('hi')
# 출력
# 출력값 없음
print_hi() 함수는 return값이 없고, print()문이 있을 뿐이다. 게다가 코드는 함수를 정의했을 뿐 실행하거나 한 것이 아무것도 없으므로 아무것도 출력되지 않는다.
8. 아래 코드의 실행 결과는?
name = 'Wien'
def call_my_name():
print(name)
name='Wien_2'
call_my_name()
① 'Wien' ② 'Wien_2' ③ None ④ UnboundLocalError: local variable 'name' referenced before assignment ⑤ 'call_my_name'
- 답 및 해설
④ UnboundLocalError: local variable 'name' referenced before assignment
=> 함수 밖에서 전역변수 name을 선언했다. 함수 내부에서는 전역변수인 name을 지역변수로 호출하려 했기 때문에 위와 같은 에러가 난다. 함수 내부에서 print문보다 먼저 지역변수 name을 선언하거나, 함수 시작부분에 global name을 넣어 주면 에러가 나지 않는다.
9. 아래 코드의 실행 결과는?
country=['korea', 'japan', 'china']
country.append('remove')
print(country.remove('remove'))
- 답 및 해설
# 입력
country=['korea', 'japan', 'china']
country.append('remove')
print(country.remove('remove'))
# 출력
None
remove()함수는 괄호 안의 값을 지울 뿐, 반환하는 값은 없기 때문에 None이 출력된다.
10. 아래 코드의 실행 결과는?
def say_myself(name, old, woman=True):
print('나는 %s 입니다' %name)
print('나이는 %d살입니다' %old)
if woman:
print('여자입니다')
else:
print('남자입니다')
say_myself('Wien', 20)
- 답 및 해설
# 입력
def say_myself(name, old, woman=True):
print('나는 %s 입니다' %name)
print('나이는 %d살입니다' %old)
if woman:
print('여자입니다')
else:
print('남자입니다')
say_myself('Wien', 20)
# 출력
나는 Wien 입니다
나이는 20살입니다
여자입니다
=> 함수 매개변수 부분에 woman=True로, 세번째 인수가 없을 시 woman 매개변수가 기본값으로 되어 있고, 그 값은 True이다. 함수 내부에서는 if문에 woman이 True일 경우 '여자입니다'를 출력하게끔 되어 있다.
함수 실행부분에서 첫번째, 두번째 인수만 넣어주었으므로 세번째 인수는 기본값인 True가 되고, 함수 내의 if문이 조건에 맞추어 실행된다.
'STUDY > Python' 카테고리의 다른 글
[데이터 과학을 위한 파이썬 프로그래밍_2판] 8. 파이썬 스타일 코드(1) (0) | 2023.08.22 |
---|---|
[데이터 과학을 위한 파이썬 프로그래밍_2판] 7. 자료구조 (3) | 2023.08.21 |
[데이터 과학을 위한 파이썬 프로그래밍_2판] 4. 조건문과 반복문 (0) | 2023.08.17 |
[데이터 과학을 위한 파이썬 프로그래밍_2판] 3. 화면 입출력과 리스트(2) (0) | 2023.08.16 |
[데이터 과학을 위한 파이썬 프로그래밍_2판] 3. 화면 입출력과 리스트(1) (0) | 2023.08.16 |