# 일반적인 파이썬 FAQ

## 일반적인 정보

### 파이썬이 무엇입니까?

파이썬은 인터프리터 방식의, 해석되고 상호작용이 가능한, 객체 지향적 프로그래밍 언어입니다. 모듈, 예외, 동적 타이핑, 굉장히 높은 수준의 동적 데이터 타입, 그리고 클래스를 내포하고 있습니다. 절차적이나 함수형 프로그래밍과 같은 객체 지향 프로그래밍 이외의 여러 프로그래밍 패러다임을 지원합니다. 파이썬은 굉장히 깔끔한 구문으로 놀랄만한 힘을 결합합니다. 이 언어는 다양한 시스템 호출과 라이브러리 뿐만 아니라 다양한 윈도우 시스템 관련 인터페이스를 갖고 있으며, C 언어와 C++ 언어로 확장이 가능합니다. 또한 프로그래밍 인터페이스가 필요한 애플리케이션의 확장 언어로도 사용할 수 있습니다. 마지막으로, 파이썬은 리눅스와 macOS를 포함하는 많은 유닉스 변종과 윈도우에서 돌아가는 포터블 언어입니다.

추가 정보는 파이썬 자습서에 있습니다. 파이썬 초보자 가이드에서 다른 기초 자습서와 파이썬을 배우기 위한 자료들을 볼 수 있습니다.

### 파이썬 소프트웨어 재단이 무엇입니까?

파이썬 소프트웨어 재단이란 파이썬 2.1과 그 윗 버전의 저작권을 소유하고 있는 독립적이고 비영리적인 단체입니다. 이 재단의 사명은 파이썬의 사용을 대중화 시키고 파이썬 관련 오픈소스 기술을 발전시키는 것입니다. 파이썬 소프트웨어 재단의 홈페이지: https://www.python.org/psf/.

파이썬 소프트웨어 재단으로의 기부는 미국에서 세액공제 적용 대상입니다. 파이썬을 사용하고 도움이 된다고 생각한다면 PSF 기부 페이지를 통해 기여해 주십시오.

### 파이썬을 사용할 때 저작권 관련 제한이 있습니까?

본인이 생성한 파이썬에 대해 저작권을 명시하고, 이와 관련된 정보를 어떠한 형태로든 설명서에 표시하면 본인의 소스로 무엇이든 할 수 있습니다. 저작권 관련 규칙을 따르면 파이썬을 상업 목적으로 사용해도 괜찮으며, 소스코드나 (수정된 또는 수정되지 않은) 이진형태의 파이썬을 팔거나, 파이썬을 내장하는 상품을 팔아도 괜찮습니다. 그럼에도 저희는 파이썬이 사용된 모든 상업 활동을 알고 싶습니다.

See the license page to find further explanations and the full text of the PSF License.

파이썬 로고는 상표로 등록되어 있으며, 일부 경우에는 사용하기 위한 허가가 필요합니다. 더 많은 정보를 원하시면 상표 사용 정책을 참조하십시오.

### 파이썬은 애초에 왜 만들어졌습니까?

여기 Guido van Rossum 씨가 작성한 굉장히 요약된 파이썬의 탄생 계기입니다:

> 저는 CWI(Centrum Wiskunde & Informatica)의 ABC 그룹에서 인터프리터 언어를 도입하며 광범위한 경험을 해봤고, 그 그룹과 일하며 언어의 디자인에 대해 많은 것을 배웠습니다. 들여쓰기로 문단 묶기나 매우-상위-레벨 자료형을 포함한 것과 같은 파이썬의 다양한 기능들이 이 당시 경험을 바탕으로 만들어졌습니다.

> ABC 언어에 있어서 저는 불만도 있었지만, 마음에 드는 기능도 많았습니다. ABC 언어(그리고 언어의 이행과정)는 제 불만을 극복할 만큼 확장할 방법이 없었죠. –사실 확장성이 떨어지는 것이 이 언어의 가장 큰 문제점 중 하나였습니다. 저는 Modula-2+를 사용하는데 약간의 경험이 있었고 Modula-3의 디자이너 분들과 대화도 나눠보았으며 Modula-3 관련 레포트도 읽어본 상태였습니다. Modula-3은 예외에서 쓰인 문법과 의미론을 비롯한 일부 파이썬 기능들의 기원입니다.

> 저는 CWI에서 Amoeba 분산 운영체제 그룹에 속해 일하고 있었습니다. Amoeba는 Bourne 셸로는 쉽게 접근하지 못하는 고유의 시스템 호출 인터페이스를 내장하고 있었기 때문에 저희는 C 프로그램이나 Bourne 셸 스크립트를 작성하는 것이 아닌 더 좋은 시스템 관리 방법이 필요했습니다. Amoeba에서 에러 처리를 해본 경험 덕분에 저는 프로그래밍 언어의 기능에 있어서 예외의 중요성을 인지하고 있었습니다.

> ABC의 문법을 지키면서 Amoeba 시스템 호출에 접근 가능한 스크립트 언어가 필요하다는 것을 깨달았죠. Amoeba 특유의 언어를 만드는 건 어리석은 행동이라고 느껴서 대체로 확장 가능한 언어가 필요한 상황이라고 판단했습니다.

> 1989년 크리스마스 연휴에 저는 많은 시간이 있었고, 그 참에 도전해보기로 했습니다. 다음 해에도 제 개인적인 시간을 투자하며 언어를 완성시켜 가는 와중에 Python은 Amoeba 프로젝트에서 날이 갈수록 성공적으로 사용되고 있었습니다. 그리고 제 동료들의 피드백을 통해 저는 초기 개선사항들을 추가할 수 있었죠.

> 1991년 2월, 1년이 조금 넘는 개발 기간 후, 저는 USENET에 올리기로 했습니다. 나머지는 `Misc/HSTORY` 파일에 있습니다.

### 파이썬의 강점은 무엇입니까?

파이썬은 다양한 상황에 적용 가능한, 범용성 있는 고급언어입니다.

The language comes with a large standard library that covers areas such as string processing (regular expressions, Unicode, calculating differences between files), internet protocols (HTTP, FTP, SMTP, XML-RPC, POP, IMAP), software engineering (unit testing, logging, profiling, parsing Python code), and operating system interfaces (system calls, filesystems, TCP/IP sockets). Look at the table of contents for 파이썬 표준 라이브러리 to get an idea of what’s available. A wide variety of third-party extensions are also available. Consult the Python Package Index to find packages of interest to you.

### 파이썬 버전 관리 규칙은 무엇입니까?

Python versions are numbered “A.B.C” or “A.B”:

- A is the major version number – it is only incremented for really major changes in the language.

- B is the minor version number – it is incremented for less earth-shattering changes.

- C is the micro version number – it is incremented for each bugfix release.

Not all releases are bugfix releases. In the run-up to a new feature release, a series of development releases are made, denoted as alpha, beta, or release candidate. Alphas are early releases in which interfaces aren’t yet finalized; it’s not unexpected to see an interface change between two alpha releases. Betas are more stable, preserving existing interfaces but possibly adding new modules, and release candidates are frozen, making no changes except as needed to fix critical bugs.

Alpha, beta and release candidate versions have an additional suffix:

- The suffix for an alpha version is “aN” for some small number N.

- The suffix for a beta version is “bN” for some small number N.

- The suffix for a release candidate version is “rcN” for some small number N.

In other words, all versions labeled 2.0aN precede the versions labeled 2.0bN, which precede versions labeled 2.0rcN, and those precede 2.0.

또한 “+” 접미사가 붙은 버전을 마주할 수도 있습니다. 예) “2.2+”. 이는 CPython 개발 저장소에서 바로 빌드된, 배포되지 않은 버전입니다. 실제는 이 버전의 최종 소규모 배포가 이루어질 때 다음 소규모 버전으로 증가하여 “a0” 버전이 됩니다. 예) “2.4a0”.

See the Developer’s Guide for more information about the development cycle, and PEP 387 to learn more about Python’s backward compatibility policy. See also the documentation for `sys.version`, `sys.hexversion`, and `sys.version_info`.

### 파이썬 소스를 어떻게 얻을 수 있습니까?

최신 파이썬 소스는 python.org 또는 https://www.python.org/downloads/ 에서 항상 구할 수 있고, 최신 개발 소스는 https://github.com/python/cpython/ 에서 구할 수 있습니다.

소스 배포판은 모든 C 언어 코드, 스핑크스 형식의 문서, 파이썬 라이브러리 모듈, 예제 프로그램들, 그리고 일부 유용한 무료 배포 소프트웨어를 포함합니다. 소스는 대부분의 유닉스 플랫폼에서 추가 설정 없이 컴파일되고 실행 가능합니다.

소스 코드를 받고 컴파일하는 부분에서 추가 정보를 원하시면 파이썬 개발자 가이드의 개요를 참고하십시오.

### 파이썬 설명 문서는 어떻게 구합니까?

현재 파이썬의 안정화 버전에 관련된 표준 문서는 https://docs.python.org/3/에서 확인할 수 있습니다. PDF, 텍스트 문서, 그리고 다운로드 가능한 HTML 버전들은 https://docs.python.org/3/download.html 에서 구할 수 있습니다.

The documentation is written in reStructuredText and processed by the Sphinx documentation tool. The reStructuredText source for the documentation is part of the Python source distribution.

### 저는 프로그래밍을 해본 적이 없습니다. 파이썬 튜토리얼이 있습니까?

다양한 튜토리얼과 책이 존재합니다. 표준 문서로는 파이썬 자습서가 있습니다.

초보자 가이드에서 튜토리얼 목록과 같은 초보 파이썬 개발자를 위한 정보를 확인하십시오.

### 파이썬에 특화된 뉴스 그룹이나 메일링 리스트가 있습니까?

뉴스 그룹은 comp.lang.python, 그리고 메일링 리스트는 python-list에서 확인 할 수 있습니다. 뉴스 그룹과 메일링 리스트는 서로 연동되어 있어서 뉴스를 읽는다면 메일을 구독할 필요가 없습니다. comp.lang.python은 활발하고 하루에도 수백 개의 포스팅이 올라오기 때문에 Usenet 독자들은 이 매체를 통해 더 원활하게 소통할 수 있을 것입니다.

Announcements of new software releases and events can be found in comp.lang.python.announce, a low-traffic moderated list that receives about five postings per day. It’s available as the python-announce mailing list.

https://www.python.org/community/lists/ 에서 다른 메일링 리스트와 뉴스 그룹에 대한 정보를 확인할 수 있습니다.

### 파이썬 베타 테스트 버전은 어떻게 구합니까?

알파와 베타 배포판은 https://www.python.org/downloads/ 에서 확인할 수 있습니다. 모든 배포는 comp.lang.python 과 comp.lang.python.announce 뉴스그룹, 그리고 파이썬 홈페이지 https://www.python.org/ 에서 공지됩니다. 뉴스의 RSS 피드가 제공됩니다.

Git을 통해 파이썬의 개발 버전을 사용할 수 있습니다. 파이썬 개발자 가이드를 확인하십시오.

### 파이썬 버그 리포트나 패치는 어떻게 제출합니까?

To report a bug or submit a patch, use the issue tracker at https://github.com/python/cpython/issues.

파이썬이 어떻게 개발되는지 더 알고 싶으시다면 파이썬 개발자 가이드를 참조하십시오.

### 제가 참고할만한 파이썬 관련 기사가 있습니까?

당신이 가장 좋아하는 파이썬 책을 인용하는 것이 제일 좋을 것 같습니다.

The very first article about Python was written in 1991 and is now quite outdated.

> Guido van Rossum and Jelke de Boer, “Interactively Testing Remote Servers Using the Python Programming Language”, CWI Quearterly, Volume 4, Issue 4 (December 1991), Amsterdam, pp 283–303.

### 파이썬 관련 책이 있습니까?

예, 많이 있고 현재 출판되는 책들도 있습니다. 리스트를 원한다면 https://wiki.python.org/moin/PythonBooks 에서 파이썬 위키를 확인하십시오.

아니면 온라인 서점에서 “파이썬”을 검색하고 몬티 파이썬 관련 항목을 필터링해도 괜찮습니다; 검색할 때 “파이썬”과 “언어”를 검색해도 좋습니다.

### 도대체 www.python.org는 어디에 있는 겁니까?

The Python project’s infrastructure is located all over the world and is managed by the Python Infrastructure Team. Details here.

### 왜 이 언어는 파이썬이라 불립니까?

Guido van Rossum 씨가 파이썬을 구현할 당시 그는 1970년대에 BBC에서 방영된 코미디 시리즈인 “몬티 파이튼의 플라잉 서커스”대본을 읽고 있었습니다. 판 로쉼은 자신이 만든 언어가 짧고 독창적이면서도 약간 신비한 느낌의 이름이 필요하다고 생각했기에 언어를 파이썬이라고 부르기로 결정했습니다.

### “몬티 파이튼의 플라잉 서커스”를 좋아해야합니까?

아니요, 하지만 도움은 됩니다. :)

## 현실 속의 파이썬

### 파이썬은 어느 정도 안정화 되어있습니까?

Very stable. New, stable releases have been coming out roughly every 6 to 18 months since 1991, and this seems likely to continue. As of version 3.9, Python will have a new feature release every 12 months (PEP 602).

The developers issue bugfix releases of older versions, so the stability of existing releases gradually improves. Bugfix releases, indicated by a third component of the version number (e.g. 3.5.3, 3.6.2), are managed for stability; only fixes for known problems are included in a bugfix release, and it’s guaranteed that interfaces will remain the same throughout a series of bugfix releases.

The latest stable releases can always be found on the Python download page. Python 3.x is the recommended version and supported by most widely used libraries. Python 2.x is not maintained anymore.

### 얼마나 많은 사람이 파이썬을 씁니까?

아마 수백만의 사용자가 있을 텐데, 정확한 수를 얻기는 힘듭니다.

파이썬은 무료로 다운로드받을 수 있기 때문에 판매액이 없습니다. 그리고 파이썬은 다양한 사이트에서, 다양한 리눅스 배포판과 패키지로 제공되므로 다운로드 통계치 역시 모든 것을 알려주지 못합니다.

활발하게 활동하는 comp.lang.python이라는 뉴스그룹이 있지만 모든 파이썬 유저들이 그곳에 글을 올리지 않으며 심지어 읽는 것도 아닙니다.

### 파이썬으로 진행된 중요한 프로젝트가 존재합니까?

https://www.python.org/about/success 에서 파이썬을 사용한 프로젝트를 확인할 수 있습니다. 과거 파이썬 회의들을 통해 파이썬의 성장에 기여한 다양한 기업들과 단체들을 확인할 수 있습니다.

High-profile Python projects include the Mailman mailing list manager and the Zope application server. Several Linux distributions, most notably Red Hat, have written part or all of their installer and system administration software in Python. Companies that use Python internally include Google, Yahoo, and Lucasfilm Ltd.

### 파이썬에 어떤 새로운 개발요소들이 예정되어 있습니까?

See https://peps.python.org/ for the Python Enhancement Proposals (PEPs). PEPs are design documents describing a suggested new feature for Python, providing a concise technical specification and a rationale. Look for a PEP titled “Python X.Y Release Schedule”, where X.Y is a version that hasn’t been publicly released yet.

New development is discussed on the python-dev mailing list.

### 기존의 파이썬과 호환 가능하지 않은 변경안을 제시해도 괜찮습니까?

일반적으로, 아니요. 현재 전 세계에 수 없이 많은 파이썬 코드들이 작성되어 있으며, 이미 존재하는 프로그램의 아주 작은 부분이라도 무효화한다면 그 변경안은 눈살을 찌푸리고 봐야합니다. 당신이 변환 프로그램을 제공한다고 해도 설명서를 전부 업데이트 해야하는 문제가 남아있습니다. 뿐만 아니라 수 많은 책들이 파이썬에 관련해서 쓰여져 있는데, 저희는 한 순간에 그 모든 책들을 무효화 시키고 싶지 않습니다.

만약 기능이 바뀌어야 한다면 점차적인 업그레이드 방안의 제시를 필요로 합니다. PEP 5에서 하위호환 불가능한 변경을 도입할 때 사용자의 불편함을 최소화 하는 절차를 확인할 수 있습니다.

### 파이썬이 초보 프로그래머들에게 좋은 언어입니까?

예.

파스칼, C, 또는 C++나 Java의 일부처럼 절차적이고 정적인 언어를 학생들의 첫 언어로 가르치는 것은 아직 흔한 교육 방식입니다. 하지만 그들이 파이썬을 첫 언어로 배우는 것이 더 이로울 수도 있습니다. 파이썬은 굉장히 간단하면서도 일관된 문법과 방대한 표준 라이브러리를 가지고 있으며, 무엇보다 초기 프로그래밍 교육에서 파이썬을 이용하면 학생들이 자료형 디자인, 그리고 문제 분석과 같은 중요한 프로그래밍 능력에 집중할 수 있도록 해줍니다. 학생들은 파이썬을 통해 반복문과 절차 같은 기초적인 콘셉트를 빠르게 접할 수 있습니다. 더 나아가 그들은 첫 강의에서 사용자 정의 객체를 활용하여 작업을 할 수도 있을 것입니다.

프로그래밍을 한 번도 해본 적이 없는 학생이라면 정적인 프로그래밍 언어를 사용하는 것은 자연스럽게 느껴지지 않을 것입니다. 그 과정을 해결하기 위해서는 부가적인 요소를 익혀야하며, 이는 강의 속도를 낮춥니다. 학생들은 컴퓨터처럼 사고하는 방식, 문제를 분석하는 방법, 일정한 인터페이스를 디자인하는 방법, 그리고 정보를 캡슐화하는 것을 배우려 합니다. 장기적으로 본다면 정적인 언어를 배우는 것이 중요할 수도 있지만, 학생들의 첫 프로그래밍 언어로 보았을 때는 좋다고 볼 수 없습니다.

파이썬이 첫 개발 언어로 좋은 이유로 다양한 요소들을 뽑습니다. 파이썬은 자바처럼 방대한 표준 라이브러리를 가지고 있어서 학생들이 수업의 극 초반에 뭔가 진짜 하는 프로그래밍 프로젝트를 경험할 수 있습니다. 네 개의 함수로 만들어보는 계산기나 가계부 프로그램이 과제의 전부가 아닙니다. 표준 라이브러리를 사용하므로써 학생들은 프로그래밍의 기본을 배우며 그럴싸한 애플리케이션을 만들어 볼 수 있습니다. 표준 라이브러리를 사용하면서 학생들에게 코드의 재활용 역시 가르쳐 줄 수 있습니다. 뿐만 아니라 PyGame 같은 제삼자 모듈 역시 학생들의 시야를 넓히는데 도움이 됩니다.

파이썬의 상호작용 가능한 인터프리터는 학생들이 코딩하며 언어의 기능을 테스트해 볼 수 있게 해줍니다. 학생들은 하나의 창에서 코드를 수정하며 다른 창에서 인터프리터를 돌려볼 수 있습니다. 만약 그들이 리스트에 대한 메서드가 기억나지 않는다면, 이와 같은 시도를 해볼 수 있습니다:

    >>> L = []
    >>> dir(L)
    ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
    '__dir__', '__doc__', '__eq__', '__format__', '__ge__',
    '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__',
    '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__',
    '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
    '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__',
    '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear',
    'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
    'reverse', 'sort']
    >>> [d for d in dir(L) if '__' not in d]
    ['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

    >>> help(L.append)
    Help on built-in function append:

    append(...)
        L.append(object) -> None -- append object to end

    >>> L.append(1)
    >>> L
    [1]

인터프리터가 있다면, 학생들이 코딩하면서 설명서를 열람하기 쉽습니다.

There are also good IDEs for Python. IDLE is a cross-platform IDE for Python that is written in Python using Tkinter. Emacs users will be happy to know that there is a very good Python mode for Emacs. All of these programming environments provide syntax highlighting, auto-indenting, and access to the interactive interpreter while coding. Consult the Python wiki for a full list of Python editing environments.

만약 파이썬이 교육 분야에서 어떻게 사용되는지에 대해 논의하고 싶으시면 the edu-sig mailing list에 들어와 주십시오.