[python] 파이썬 소스 코드를 읽고 싶습니다. 어디서부터 시작해야하나요 [닫힘]

파이썬 소스 코드를 읽고 싶습니다.

내 경험,

저는 Python과 Java를 잘 알고 있습니다. 다양한 수준의 다른 언어를 알고 있지만 특히 C / C + / 둘 다 잘하지 않습니다. 저는 대학에서 C를 공부했지만 전문적으로 프로그래밍 한 적이 없습니다.

이 코드를 읽는 나의 이유.

  1. 파이썬이 어떻게 작동하는지 이해하십시오.
  2. C를 더 잘 배우십시오.

나에게 2보다 1이 더 중요합니다.

어떻게해야합니까?



답변

Python C API에 대해 배우면서 시작하십시오. 크고 풍부한 API이며 Python 소스는 자연스럽게 모든 곳에서 사용합니다. Py_INCREF 등이 의미하는 바를 이해하기 전에 Python 소스 코드에 대해 자세히 알아보지는 못할 것입니다.

저는 Pycon에서 API : A Whirlwind Excursion through Python C Extensions에 대해 설명하는 프레젠테이션을했습니다 . C 확장은 Python 코드 자체와 동일한 API를 사용합니다.


답변

첫째, 1에 주로 관심이 있다면 다양한 모듈의 Python 소스를 읽는 것으로 시작합니다 (C로 바로 이동하지 않음). 일부 모듈의 소스를 읽을 때마다 항상 Python 프로그래밍에 대해 새로운 것을 배웠습니다.

둘째, C를 더 잘 배우고 싶다면 개인적으로 완전히 다른 것을 제안합니다. 정적으로 소스 코드를 읽는 것만으로 C를 더 잘 이해할 수 는 없습니다 (또는 최소한 제한된 접근 방식입니다. 조금 더 나아질 수는 있지만 읽기 소스가 얻을 수있는 것은 너무 많습니다).

적어도 C의 중간 정도 크기의 프로젝트를 프로그래밍 한 후, 다음 파이썬 소스보고 시작 것입니다. 이것이 정말로 C를 더 잘 알 수있는 유일한 방법이며, C를 잘 모르고 파이썬의 C 소스를 읽는 것이 그리 멀리 가지 않을 것이라고 생각합니다.

C 프로젝트에 대한 아이디어

사실, 여기 C 프로젝트에 대한 아이디어가 있습니다. C로 Python 인터프리터를 작성하십시오. 분명히 완료에 가까워지지 않을 것이며 이것은 매우 어려운 프로젝트입니다.하지만 언어의 일부에만 집중한다면 좋은 생각이라고 생각합니다.

뿐만 아니라 당신은 C를 배우는 것이 도움이 될 것입니다, 당신이 훨씬 더도 파이썬을 이해하는 데 도움이 될 것입니다 전에 소스에서 찾고 : 당신이 이해 깊은해야 할 것이다 많은 파이썬에서 물건, 당신이 디자인의 장단점을 이해하게 될 것입니다 파이썬의 작동 원리 등

그리고 마침내 파이썬의 코드를 읽었을 때, 왜 그런 식으로 작동하는지 이해할 수있을뿐만 아니라, 당신이 가진 문제를 해결하는 정말 멋진 C 기술을 많이 배울 것입니다.


답변

1) 먼저 자신의 Python을 빌드하고 디버거에서 실행할 수 있는지 확인하십시오. 따라서 인쇄 표현식을 추가 할 수있을뿐만 아니라 지점에서 중단하고 코드 흐름을 따를 수도 있습니다. 함수 호출을 추적 할 수있는 도구가 있다면 완벽합니다.

2) 데이터 유형을 구현하는 파일로 시작하십시오. 그들은 매우 이해하기 쉽고 코드를 읽는 동안 C 언어 능력을 향상시킵니다.

3) UML 다이어그램 만들기-Argo UML 또는 MS Visio와 같은 간단한 그리기 도우미 도구가 여기에서 도움이 될 수 있습니다. 코드 흐름을 기록합니다.

4) 파이썬의 시작 코드를 읽으십시오. 기본 인프라가 초기화되는 내용과 방법을 확인하십시오.

6) Ty는 Python 측면을 100 % 이해합니다. 심지어 더 어려운 구현 세부 사항, AST가 무엇인지, 바운드 및 언 바운드 메서드가 무엇인지,이를 구현하는 방법까지도 이해합니다. 파이썬 인터프리터를 작성하는 방법을 염두에 둔 모델이 있으면 최종 마스터 단계로 이동할 수 있습니다.

7) 제공된 빠른 디버거 C API로 디버거 확장을 작성하십시오. 이것은 당신의 C 기술을 향상시키는 데 도움이됩니다.

8) 마지막 마스터 단계를 수행하고 인터프리터 코드의 핵심으로 뛰어 들어보십시오. 숙련 된 C 프로그래머에게는이 내용을 읽고 이해하기조차 어렵습니다. 표현식이 어떻게 평가되고 메소드 조회가 캐시되는지, 프레임이 범위 지정 규칙을 위해 설정되는 방법 등을 읽어보십시오. 복잡하고 코드 라인 측면에서 어렵고 복잡합니다.

9) Adobe Photoshop을 시작하고 멋진 “Master of Python”졸업장을 만들어 사무실 벽에 놓으십시오.


답변

Python 웹 사이트에서 소스 를 다운로드하십시오 . Python-3.1.1이라는 디렉토리에 소스의 압축을 푼다 고 가정합니다. Python이 내부에서 작동하는 방식을 탐색하는 데 도움이되는 Python 소스 코드 내에서 두 가지 시작점을 제안합니다.

  • Python 가상 머신이 인터 퍼터에서 생성 된 바이트 코드를 실행하는 방법을 조사하십시오. Python VM은 Python-3.1.1 / Python / ceval.c라는 파일에 있습니다. VM의 핵심은 ceval.c의 PyEval_EvalFrameEx 함수에서 시작하는 평가 루프입니다. 소스와 인라인 주석을 읽으십시오. 나는 당신이 그것을 즐길 것이라고 확신합니다.

  • 또 다른 옵션은 목록, 사전 및 세트와 같은 내장 파이썬 데이터 유형이 어떻게 구현되는지 살펴 보는 것입니다. 예를 들어 세트는 Python-3.1.1 / Objects / setobject.c에서 구현됩니다. Objects 디렉토리에는 다른 데이터 유형의 구현도 포함되어 있습니다.


답변

질문은 매우 광범위하므로 가장 좋은 대답은 파이썬 소스를 다운로드하고 미쳐 가는 것입니다. 당신이 잘 아는 파이썬의 모듈이나 섹션을 선택하고 내부에 무엇이 있는지 확인하십시오.


답변