42 실시간 Python 인터뷰 질문과 답변 [2022]
파이썬 면접을 준비 중이신가요? 아니면 파이썬에 대한 지식이 어느 정도인지 알고 싶으신가요? 괜찮습니다. 이 글에서는 질문과 답변을 통해 여러분의 궁금증을 풀어드리겠습니다.
이 글은 면접에서 나올 수 있는 질문 유형을 파악하는 데 도움을 줄 것입니다. 또한 여러분의 파이썬 실력을 스스로 평가하는 데에도 유용할 것입니다. 답변을 확인하기 전에 먼저 질문에 답해보면서 자신을 객관적으로 평가해 보세요. 그럼 바로 질문으로 들어가 보겠습니다.
질문은 주제별로 여러 섹션으로 나뉘어 있습니다. 각 섹션에는 엄선된 질문과 그에 대한 답변이 제공됩니다. 답변은 여러분이 이해하기 쉬운 방식으로 수정할 수 있습니다. 그렇게 함으로써 면접관은 여러분이 단순히 내용을 읽는 것이 아니라 진정으로 이해하고 있다고 느낄 것입니다.
파이썬 언어
#1. 파이썬이란 무엇인가요?
파이썬은 해석형 고급 범용 프로그래밍 언어입니다. 다양한 써드파티 라이브러리 및 프레임워크와 함께 파이썬을 사용하여 거의 모든 종류의 애플리케이션을 개발할 수 있습니다. 파이썬은 인공지능(AI)이나 데이터 과학과 같은 첨단 기술 분야에서 가장 인기 있는 프로그래밍 언어 중 하나입니다.
#2. 인터프리터와 컴파일러의 주요 차이점은 무엇인가요?
인터프리터는 코드를 한 줄씩 기계어로 번역하는 반면, 컴파일러는 전체 코드를 한 번에 기계어로 번역합니다.
#3. 파이썬은 정적 타입 언어인가요, 아니면 동적 타입 언어인가요?
파이썬은 동적 타입 언어입니다.
#4. 동적 타입 언어란 무엇을 의미하나요?
동적 타입 언어는 변수의 타입을 런타임에 확인합니다. 파이썬, 자바스크립트, 루비 등이 대표적인 동적 타입 언어입니다.
추가 정보: 정적 타입 언어는 변수의 타입을 컴파일 타임에 확인합니다. C++, C, Java 등이 대표적인 정적 타입 언어입니다.
#5. 파이썬의 몇 가지 활용 분야를 설명해 주세요.
파이썬은 구문이 간결하고 배우기 쉬워서, 마치 영어를 읽는 것처럼 느껴질 수 있습니다. 또한 파이썬 개발자 커뮤니티는 매우 활발하며, 다양한 종류의 애플리케이션 개발에 활용할 수 있는 수많은 써드파티 패키지를 찾을 수 있습니다. 파이썬은 웹 애플리케이션, GUI 애플리케이션, CLI 애플리케이션 등을 개발하는 데 활용할 수 있습니다.
파이썬의 가장 인기 있는 활용 분야 중 하나는 자동화입니다. 파이썬을 사용하면 디스크 정리, 이메일 전송, 제품 가격 정보 수집 등과 같은 반복적인 작업을 자동화하는 스크립트를 쉽게 만들 수 있습니다. 또한 데이터 과학 분야에서 가장 널리 사용되는 언어 중 하나입니다.
#6. 파이썬을 사용하여 개발한 애플리케이션이 있나요?
반복적이고 지루한 작업을 자동화하기 위해 다양한 자동화 스크립트를 작성했습니다. 예를 들어, 제품 가격이나 가용성 등의 정보를 얻기 위한 스크립트를 만들었습니다.
또한 Django나 Flask와 같은 프레임워크를 사용하여 웹 애플리케이션을 개발한 경험도 있습니다. Django와 Flask 모두를 사용하여 웹 애플리케이션을 구축한 경험이 있습니다.
참고: 위의 답변은 예시일 뿐입니다. 여러분의 경험과 지식에 따라 다른 답변을 할 수 있습니다. 파이썬을 사용하여 작업했던 다양한 영역을 설명하고, 가능하다면 여러분이 개발한 애플리케이션을 소개하는 것이 좋습니다.
데이터 타입
#7. 파이썬의 내장 데이터 타입은 무엇인가요?
파이썬에는 여러 가지 내장 데이터 타입이 있습니다. `int`, `float`, `complex`, `bool`, `list`, `tuple`, `set`, `dict`, `str` 등이 있습니다.
참고: 파이썬의 모든 데이터 타입을 말할 필요는 없습니다. 여러분이 주로 사용하는 몇 가지를 언급하면 됩니다. 면접관은 여러분의 답변을 바탕으로 추가 질문을 할 수 있습니다.
#8. 리스트와 튜플의 차이점은 무엇인가요?
리스트와 튜플은 모두 객체들의 컬렉션을 저장하는 데 사용됩니다. 리스트와 튜플의 주요 차이점은 "리스트는 변경 가능한 객체이고 튜플은 변경 불가능한 객체"라는 점입니다.
#9. 변경 가능한 데이터 타입과 변경 불가능한 데이터 타입은 무엇인가요?
변경 가능한 데이터 타입은 생성된 후에도 값을 변경할 수 있습니다. 파이썬에서 변경 가능한 객체에는 리스트(list), 세트(set), 딕셔너리(dict) 등이 있습니다.
변경 불가능한 데이터 타입은 생성된 후에는 값을 변경할 수 없습니다. 파이썬에서 변경 불가능한 객체에는 문자열(str), 튜플(tuple) 등이 있습니다.
#10. 리스트의 몇 가지 메소드를 설명해 주세요.
1. `append()` - 리스트에 요소를 추가하는 데 사용됩니다. 리스트의 맨 끝에 요소를 추가합니다.
>>> a = [1, 2] >>> a.append(3) >>> a [1, 2, 3]
2. `pop()` - 리스트에서 요소를 제거하는 데 사용됩니다. 인덱스를 인수로 제공하지 않으면 마지막 요소를 제거하고, 인수를 제공하면 해당 인덱스의 요소를 제거합니다.
>>> a = [1, 2, 3, 4, 5] >>> a.pop() 5 >>> a [1, 2, 3, 4] >>> a.pop(1) 2 >>> a [1, 3, 4]
3. `remove()` - 리스트에서 특정 값을 가진 요소를 제거하는 데 사용됩니다. 리스트에서 제거하려는 요소의 값을 인수로 제공해야 합니다. 리스트에서 해당 값을 가진 첫 번째 요소를 제거합니다.
>>> a = [1, 2, 2, 3, 4] >>> a.remove(1) >>> a [2, 2, 3, 4] >>> a.remove(2) >>> a [2, 3, 4]
4. `sort()` - 리스트를 오름차순 또는 내림차순으로 정렬하는 데 사용되는 메소드입니다.
>>> a = [3, 2, 4, 1] >>> a.sort() >>> a [1, 2, 3, 4] >>> a.sort(reverse=True) >>> a [4, 3, 2, 1]
5. `reverse()` - 리스트 요소의 순서를 뒤집는 데 사용되는 메소드입니다.
>>> a = [3, 2, 4, 1] >>> a.reverse() >>> a [1, 4, 2, 3]
참고: `clear()`, `insert()`, `count()` 등과 같은 다른 메소드도 있습니다. 면접관에게 리스트의 모든 메소드를 설명할 필요는 없습니다. 주로 사용하는 두세 가지 메소드를 설명하면 충분합니다.
#11. 문자열의 몇 가지 메소드를 설명해 주세요.
1. `split()` - 문자열을 원하는 구분자를 기준으로 분할하는 메소드입니다. 결과를 리스트로 반환합니다. 기본적으로 공백을 기준으로 문자열을 분할합니다. 메소드에 인수로 구분자를 제공할 수 있습니다.
>>> a = "This is koreantech.org"
>>> a.split()
['This', 'is', 'koreantech.org']
>>> a = "1, 2, 3, 4, 5, 6"
>>> a.split(", ")
['1', '2', '3', '4', '5', '6']
2. `join()` - 문자열 객체 리스트를 결합하는 데 사용되는 메소드입니다. 문자열 객체를 제공된 구분자와 결합합니다.
>>> a = ['This', 'is', 'koreantech.org'] >>> ' '.join(a) 'This is koreantech.org' >>> ', '.join(a) 'This, is, koreantech.org'
참고: 문자열에는 `capitalize()`, `isalnum()`, `isalpha()`, `isdigit()`, `lower()`, `upper()`, `center()` 등과 같은 다른 메소드도 있습니다.
#12. 리스트의 음수 인덱스란 무엇인가요?
인덱스는 리스트에서 요소에 접근하는 데 사용됩니다. 리스트의 일반적인 인덱싱은 0부터 시작합니다.
일반 인덱싱과 마찬가지로 음수 인덱싱도 리스트 요소에 접근하는 데 사용됩니다. 하지만 음수 인덱싱을 사용하면 리스트의 끝에서부터 인덱스에 접근할 수 있습니다. 음수 인덱싱은 -1부터 시작하며, 리스트의 길이까지 -2, -3, -4 등으로 계속 감소합니다.
>>> a = [1, 2, 3, 4, 5] >>> a[-1] 5 >>> a[-3] 3 >>> a[-5] 1
#13. 딕셔너리의 몇 가지 메소드를 설명해 주세요.
1. `items()` - 딕셔너리의 키-값 쌍을 튜플 리스트 형태로 반환하는 메소드입니다.
>>> a = {1: 'koreantech.org', 2: 'koreantech.org Tools', 3: 'koreantech.org Online Compiler'}
>>> a.items()
dict_items([(1, 'koreantech.org'), (2, 'koreantech.org Tools'), (3, 'koreantech.org Online Compiler')])
2. `pop()` - 딕셔너리에서 키-값 쌍을 제거하는 데 사용되는 메소드입니다. 제거하려는 키를 인수로 받아서, 딕셔너리에서 해당 키-값 쌍을 제거하고 값을 반환합니다.
>>> a = {1: 2, 2: 3}
>>> a.pop(2)
3
>>> a
{1: 2}
참고: 딕셔너리에는 `get()`, `keys()`, `values()`, `clear()` 등과 같은 다른 메소드도 있습니다.
#14. 파이썬에서 슬라이싱이란 무엇인가요?
슬라이싱은 시퀀스 데이터 타입에서 서브 배열에 접근하는 데 사용됩니다. 주어진 인수를 기준으로 시퀀스 데이터 타입에서 일부 데이터를 반환합니다. 반환되는 데이터 타입은 원본 데이터 타입과 동일합니다.
슬라이싱은 세 가지 인수를 허용합니다: 시작 인덱스, 종료 인덱스, 그리고 증감 스텝입니다. 슬라이싱 구문은 `[start:end:step]`입니다. 인수는 필수가 아니며, 슬라이싱 인수를 지정하지 않으면 전체 데이터를 반환하는 빈 콜론(`:`)을 사용할 수도 있습니다.
>>> a = [1, 2, 3, 4, 5] >>> a[:] [1, 2, 3, 4, 5] >>> a[:3] [1, 2, 3] >>> a[3:] [4, 5] >>> a[0:5:2] [1, 3, 5]
#15. 슬라이싱을 사용할 수 있는 데이터 타입은 무엇인가요?
슬라이싱은 리스트(list), 튜플(tuple), 문자열(str) 데이터 타입에서 사용할 수 있습니다.
#16. 파이썬에서 압축 풀기 연산자는 무엇인가요? 어떻게 사용하나요?
`*`와 `**` 연산자는 파이썬에서 압축 풀기 연산자로 사용됩니다.
`*` 압축 풀기 연산자는 시퀀스 데이터 타입에서 한 번에 여러 값을 다른 변수에 할당하는 데 사용됩니다.
>>> items = [1, 2, 3] >>> a, b, c = items >>> a 1 >>> b 2 >>> c 3 >>> a, *b = items >>> a 1 >>> b [2, 3]
`**` 압축 풀기 연산자는 딕셔너리 데이터 타입과 함께 사용됩니다. 딕셔너리의 압축 풀기는 시퀀스 데이터 타입의 압축 풀기처럼 작동하지 않습니다.
딕셔너리의 압축 풀기는 주로 키-값 쌍을 한 딕셔너리에서 다른 딕셔너리로 복사하는 데 사용됩니다.
>>> a = {1: 2, 3: 4}
>>> b = {**a}
>>> b
{1: 2, 3: 4}
>>> c = {3: 5, 5: 6}
>>> b = {**a, **c}
>>> b
{1: 2, 3: 5, 5: 6}
참고: 이러한 연산자에 대한 자세한 내용은 파이썬 공식 문서를 참조하세요.
조건문과 반복문
#17. 파이썬에 switch 문이 있나요?
아니요, 파이썬에는 switch 문이 없습니다.
#18. 파이썬에서 switch 문의 기능을 어떻게 구현하나요?
if 문과 elif 문을 사용하여 switch 문의 기능을 구현할 수 있습니다.
>>> if a == 1: ... print(...) ... elif a == 2: ... print(....)
#19. break 문과 continue 문은 무엇인가요?
break - break 문은 실행 중인 반복문을 종료하는 데 사용됩니다. 코드 실행 흐름은 break 문이 속한 반복문 바깥으로 이동합니다.
>>> for i in range(5): ... if i == 3: ... break ... print(i) ... 0 1 2
continue - continue 문은 현재 반복문의 나머지 코드를 건너뛰는 데 사용됩니다. continue 문 뒤의 코드는 현재 반복에서 실행되지 않고, 다음 반복으로 건너뜁니다.
>>> for i in range(5): ... if i == 3: ... continue ... print(i) ... 0 1 2 4
#20. while 및 for 반복문과 함께 사용되는 else 블록의 코드는 언제 실행되나요?
while 및 for 반복문과 함께 사용되는 else 블록의 코드는 모든 반복이 완료된 후에 실행됩니다. 루프가 break 문에 의해 중단될 경우에는 else 블록 안의 코드가 실행되지 않습니다.
#21. 리스트 컴프리헨션과 딕셔너리 컴프리헨션은 무엇인가요?
리스트 컴프리헨션과 딕셔너리 컴프리헨션은 for 반복문의 간결한 표현 방식입니다.
>>> a = [i for i in range(10)]
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a = {i: i + 1 for i in range(10)}
>>> a
{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}
#22. range() 함수는 어떻게 작동하나요?
range() 함수는 주어진 시작 값부터 종료 값까지, 지정된 증감 스텝으로 숫자 시퀀스를 생성합니다. range() 함수의 구문은 `range(start, stop[, step])`입니다.
stop 인수는 필수이며, start와 step 인수는 선택 사항입니다. start와 step의 기본값은 각각 0과 1입니다.
>>> list(range(10)) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list(range(1, 10)) [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list(range(1, 10, 2)) [1, 3, 5, 7, 9]
함수
#23. 매개변수와 인수는 무엇인가요?
매개변수(parameter)는 함수 정의에 나열된 변수의 이름입니다.
인수(argument)는 함수를 호출할 때 함수에 전달되는 실제 값입니다.
#24. 파이썬에서 사용되는 다양한 종류의 인수는 무엇인가요?
인수의 종류에는 크게 네 가지가 있습니다. 위치 인수, 기본 인수, 키워드 인수, 임의 인수입니다.
위치 인수: 사용자 정의 함수에서 정의하는 일반적인 인수를 위치 인수라고 합니다. 함수를 호출하는 동안 모든 위치 인수는 필수로 전달되어야 합니다.
>>> def add(a, b): ... return a + b ... >>> add(1, 2) 3 >>> add(1) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: add() missing 1 required positional argument: 'b' >>>
기본 인수: 함수 정의에서 인수에 기본값을 할당할 수 있습니다. 함수를 호출할 때 해당 인수에 값을 전달하지 않으면, 함수는 기본값을 사용합니다.
>>> def add(a, b=3): ... return a + b ... >>> add(1, 2) 3 >>> add(1) 4
키워드 인수: 함수를 호출할 때 인수의 이름과 함께 값을 할당할 수 있습니다. 키워드 인수를 사용하면 위치 인수에 필수적인 인수의 순서를 신경 쓰지 않아도 됩니다.
>>> def add(a, b):
... print("a ", a)
... print("b ", b)
... return a + b
...
>>> add(b=4, a=2)
a 2
b 4
6
임의 인수: 함수가 가져올 인수의 개수를 알 수 없을 때, 임의 인수를 사용하여 여러 개의 값을 한 번에 전달할 수 있습니다. 함수 정의에 `*` 및 `**` 연산자를 사용하여 인수를 수집합니다.
>>> def add(*args):
... return sum(args)
...
>>> add(1, 2, 3, 4, 5)
15
>>> def dict_args(**kwargs):
... print(kwargs)
...
>>> dict_args(a="koreantech.org", b='koreantech.org Tools', c="koreantech.org Online Compiler")
{'a': 'koreantech.org', 'b': 'koreantech.org Tools', 'c': 'koreantech.org Online Compiler'}
#25. 람다 함수란 무엇인가요?
람다 함수는 파이썬에서 사용하는 간단한 익명 함수입니다. 람다 함수는 하나의 표현식만 가질 수 있으며, 여러 개의 인수를 받을 수 있습니다.
>>> add = lambda a, b: a + b >>> add(1, 3) 4
#26. 일반 함수와 람다 함수의 차이점은 무엇인가요?
일반 함수와 람다 함수는 비슷한 기능을 수행할 수 있습니다. 하지만 동일한 기능을 구현할 때 람다 함수에 비해 일반 함수는 추가적인 코드를 작성해야 합니다.
람다 함수는 코드가 한 줄의 표현식으로 간단하게 표현될 때 유용합니다.
#27. pass 키워드는 어디에 사용되나요?
pass 키워드는 코드에서 빈 블록을 나타낼 때 사용됩니다. 파이썬에서는 코드 없이 비어 있는 블록을 허용하지 않기 때문에, pass 문을 사용하여 빈 블록을 정의할 수 있습니다. 나중에 코드를 채워 넣을 때 유용합니다.
>>> def add(*args):
...
...
File "<stdin>", line 3
^
IndentationError: expected an indented block
>>> def add(*args):
... pass
...
>>>
#28. 재귀 함수란 무엇인가요?
재귀 함수는 자기 자신을 호출하는 함수를 의미합니다.
파이썬에서 패킹 연산자는 무엇인가요? 어떻게 사용하나요?
패킹 연산자는 함수에서 여러 개의 인수를 모으는 데 사용됩니다. 임의 인수로도 알려져 있습니다.
참고: 파이썬에서 연산자를 패킹하는 방법에 대한 자세한 내용은 파이썬 공식 문서를 참조하세요.
객체 지향 프로그래밍(OOP)
#29. 파이썬에서 클래스를 생성하는 데 사용되는 키워드는 무엇인가요?
`class` 키워드는 파이썬에서 클래스를 생성하는 데 사용됩니다. 업계 표준 관행으로 파이썬에서는 클래스 이름을 파스칼 케이스(Pascal case)로 지정하는 것이 좋습니다.
>>> class Car: ... pass ...
#30. 파이썬에서 클래스를 인스턴스화하는 방법은 무엇인가요?
클래스를 마치 함수처럼 호출하여 파이썬에서 클래스의 인스턴스를 생성할 수 있습니다. 함수 인수에 값을 전달하는 것처럼, 객체를 생성할 때 필요한 속성을 전달할 수 있습니다.
>>> class Car:
... def __init__(self, color):
... self.color = color
...
>>> red_car = Car('red')
>>> red_car.color
'red'
>>> green_car = Car('green')
>>> green_car.color
'green'
>>>
#31. 파이썬에서 self는 무엇인가요?
`self`는 클래스의 객체를 나타냅니다. 특정 객체에 대해 클래스 내부에서 해당 객체의 속성 및 메소드에 접근할 때 사용됩니다.
#32. `__init__` 메소드는 무엇인가요?
`__init__`은 다른 객체 지향 프로그래밍 언어에서 사용되는 생성자와 유사한 생성자 메소드입니다. 클래스의 객체가 생성될 때 즉시 실행됩니다. 객체의 초기 데이터를 초기화하는 데 사용됩니다.
#33. 파이썬에서 독스트링이란 무엇인가요?
독스트링(docstring) 또는 문서화 문자열은 코드 블록을 문서화하는 데 사용됩니다. 여러 줄 주석으로도 사용될 수 있습니다.
이러한 독스트링은 클래스의 메소드에서 해당 메소드가 수행하는 작업을 설명하는 데 사용됩니다. `help()` 메소드를 사용하여 독스트링을 확인할 수 있습니다.
>>> class Car:
... def __init__(self, color):
... self.color = color
...
... def change_color(self, updated_color):
... """This method changes the color of the car"""
... self.color = updated_color
...
>>> car = Car('red')
>>> help(car.change_color)
Help on method change_color in module __main__:
change_color(updated_color) method of __main__.Car instance
This method changes the color of the car
>>>
#34. 던더(dunder) 메소드 또는 매직 메소드란 무엇인가요?
앞과 뒤에 두 개의 밑줄(`__`)이 붙은 메소드를 던더 메소드(dunder method) 또는 매직 메소드(magic method)라고 합니다. 주로 메소드를 오버라이드(재정의)하는 데 사용됩니다. 클래스에서 오버라이드할 수 있는 메소드에는 `__str__`, `__len__`, `__setitem__`, `__getitem__` 등이 있습니다.
>>> class Car: ... def __str__(self): ... return "This is a Car class" ... >>> car = Car() >>> print(car) This is a Car class >>>
참고: 오버라이드할 수 있는 다른 많은 메소드들이 있습니다. 코드를 깊이 있게 사용자 정의하려는 경우에 유용합니다. 자세한 내용은 파이썬 공식 문서를 참조하세요.
#35. 파이썬에서 상속을 어떻게 구현하나요?
자식 클래스에서 부모 클래스를 인수로 전달하여 상속을 구현할 수 있습니다. 자식 클래스의 `__init__` 메소드에서 부모 클래스의 `__init__` 메소드를 호출할 수 있습니다.
>>> class Animal:
... def __init__(self, name):
... self.name = name
...
>>> class Dog(Animal):
... def __init__(self, name):
... super().__init__(name)
...
>>> doggy = Dog('Tommy')
>>> print(doggy.name)
Tommy
>>>
#36. 파이썬에서 자식 클래스 내부에서 부모 클래스에 접근하는 방법은 무엇인가요?
자식 클래스 내부에서 부모 클래스를 참조하는 데 `super()` 함수를 사용할 수 있습니다. `super()` 함수를 사용하여 부모 클래스의 속성과 메소드에 접근할 수 있습니다.
기타
#37. 파이썬에서 한 줄 주석과 여러 줄 주석을 사용하는 방법은 무엇인가요?
한 줄 주석에는 해시 기호(`#`)를 사용합니다. 여러 줄 주석에는 작은 따옴표 세 개(`'''comment'''`) 또는 큰 따옴표 세 개(`"""comment"""`)를 사용합니다.
#38. 파이썬에서 객체란 무엇인가요?
파이썬에서는 모든 것이 객체입니다. 모든 데이터 타입, 함수, 클래스는 객체입니다.
#39. `is`와 `==`의 차이점은 무엇인가요?
`==` 연산자는 두 객체의 값이 같은지 여부를 확인하는 데 사용됩니다. `is` 연산자는 두 객체가 동일한 메모리 위치를 참조하는지 여부를 확인하는 데 사용됩니다.
>>> a = [] >>> b = [] >>> c = a >>> a == b True >>> a is b False >>> a is c True >>>
#40. 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy)란 무엇인가요?
얕은 복사: 원본 객체와 동일한 복사본을 생성하되, 객체의 참조를 복사합니다. 복사된 객체와 원본 객체는 같은 객체를 참조하게 됩니다. 따라서 한 객체를 변경하면 다른 객체에도 영향을 미칩니다.
얕은 복사에는 `copy` 모듈의 `copy()` 메소드를 사용합니다.
>>> from copy import copy >>> a = [1, [2, 3]] >>> b = copy(a) >>> a[1].append(4) >>> a [1, [2, 3, 4]] >>> b [1, [2, 3, 4]]
깊은 복사: 원본 객체의 값을 새로운 객체에 재귀적으로 복사합니다. 깊은 복사를 위해서는 `copy` 모듈의 `deepcopy()` 함수를 사용하거나, 슬라이싱을 사용할 수 있습니다.
>>> from copy import deepcopy >>> a = [1, [2, 3]] >>> b = deepcopy(a) >>> a[1].append(4) >>> a [1, [2, 3, 4]] >>> b [1, [2, 3]] >>> b[1].append(5) >>> a [1, [2, 3, 4]] >>> b [1, [2, 3, 5]] >>>
#41. 이터레이터(Iterator)란 무엇인가요?
이터레이터는 반복 상태를 기억하는 파이썬 객체입니다. `__iter__` 메소드를 사용하여 데이터를 초기화하고, `__next__` 메소드를 사용하여 다음 요소를 반환합니다.
이터레이터에서 다음 요소를 가져오려면 `next(iterator)`를 호출해야 합니다. 내장 함수 `iter()`를 사용하여 시퀀스 데이터 타입을 이터레이터로 변환할 수 있습니다.
>>> a = [1, 2] >>> iterator = iter(a) >>> next(iterator) 1 >>> next(iterator) 2 >>> next(iterator) Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration >>>
#42. 제너레이터(Generator)란 무엇인가요?
제너레이터는 제너레이터 객체처럼 이터레이터를 반환하는 함수입니다. `yield` 키워드를 사용하여 데이터를 생성합니다.
>>> def numbers(n): ... for i in range(1, n + 1): ... yield i ... >>> _10 = numbers(10) >>> next(_10) 1 >>> next(_10) 2 >>> next(_10) 3 >>> next(_10) 4
결론 👨💻
이 글에서 보신 것처럼 질문은 매우 다양합니다. 이 글에서는 파이썬의 여러 주제에 대한 다양한 유형의 질문을 어떻게 준비해야 하는지 보여주