• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

array 관련 재질문 드립니다

21.08.13 17:20 작성 조회수 99

0

강의에서 

tuple_g = (ord(sfor s in chars)

와 같이 제너레이터를 생성하고, 

array_g = array.array('I', (ord(sfor s in chars))

array 안에 제너레이터를 넣은 것을 확인할 수 있었는데요,

print(array_g)

를 실행하니

array('I', [43, 95, 41, 40, 42, 38, 94, 37, 36, 35, 64, 33, 41])

라는 결과가 나왔는데 제너레이터가 어떤 과정을 거쳐 리스트 형식으로 안에서 출력이 되었는지 궁금합니다

라는 질문에

"전체 과정은 array 클래스 내부의 next 메소드를 통해서 

괄호안의 튜플이 한 개씩 생성되어 최종적으로 리스트로 만들어지는 과정입니다."

라고 답변을 해 주셨습니다. 

답변을 확인한 후 print(dir(array))로 array 내부의 메소드를 확인해 봤는데요, next 메소드는 찾을 수가 없었습니다... 

그리고 위의 질문에서 array안에 들어간 것은 튜플이 아니라 제너레이터로 알고 있는데요... 

혹시 제가 잘못 알고 있는 것인지 송구스럽지만 다시 한번 확인 부탁드립니다.

그리고 array 안에 어떤 형태의 자료형을 넣어도 결과는 왜 항상 리스트로 출력이 되는 것인지 궁금합니다.

답변 1

답변을 작성해보세요.

0

array class 하위에 cpython으로 내부적으로 실행되서 출력됩니다.

python 언어도 인터프리터(cpython)으로 제작된 매니지드 언어이기 때문에

내부에서 딥하게 구현되는 부분까지 추적할 필요는 없다고 생각합니다.

왜냐면 언매니지드 언어인 c, c++ 기반으로 만들어지는 언어도 많기 때문이예요

아래도 링크도 번역해서 generator 기초 부분을 다시 확인하시면 도움 될거예요.

https://djangostars.com/blog/list-comprehensions-and-generator-expressions/