# 常見Python問答集

目錄

- 常見Python問答集

  - 常見資訊

    - 什麼是Python?

    - 什麼是Python軟體基金會?

    - 當使用Python時有任何版權限制嗎?

    - 為什麼Python被創造出來

    - 什麼是Python擅長的事情

    - How does the Python version numbering scheme work?

    - 我如何拿到Python的原始碼

    - 如何取得Python的相關文件

    - 我從來沒寫過程式，有沒有Python的教學

    - 有沒有新手的群組或是郵件群組討論Python

    - How do I get a beta test version of Python?

    - How do I submit bug reports and patches for Python?

    - Are there any published articles about Python that I can reference?

    - 有沒有關於Python的書

    - www.python.org 這個非營利組織位於哪裡

    - 為什麼要取名為Python

    - 我需要喜歡蒙提·派森的飛行馬戲團這個節目嗎

  - Python在真實世界

    - Python穩定性如何

    - 有多少人使用Python

    - 有沒有任何重要的案子使用Python完成開發

    - 對於程式開發者Python對於未來有什麼期待

    - Is it reasonable to propose incompatible changes to Python?

    - Python對於入門的程式設計者而言是否為好的程式語言

## 常見資訊

### 什麼是Python?

Python is an interpreted, interactive, object-oriented programming language. It incorporates modules, exceptions, dynamic typing, very high level dynamic data types, and classes. Python combines remarkable power with very clear syntax. It has interfaces to many system calls and libraries, as well as to various window systems, and is extensible in C or C++. It is also usable as an extension language for applications that need a programmable interface. Finally, Python is portable: it runs on many Unix variants, on the Mac, and on Windows 2000 and later.

To find out more, start with Python 教學. The Beginner’s Guide to Python links to other introductory tutorials and resources for learning Python.

### 什麼是Python軟體基金會?

Python軟體基金會是一個獨立非營利性組織，並且擁有Python版本2.1 與更新的版本版權。Python軟體基金會的任務在於精進相關於Python 程式語言撰寫於開放原始碼技術，而且宣傳使用Python 。Python軟體基金會網址:https://www.python.org/psf/

在美國捐款給Python軟體基金會是免稅的，如果你使用Python而且發現很好用，請貢獻捐款到Python軟體基金會捐款頁面<https://www.python.org/psf/donations/>

### 當使用Python時有任何版權限制嗎?

You can do anything you want with the source, as long as you leave the copyrights in and display those copyrights in any documentation about Python that you produce. If you honor the copyright rules, it’s OK to use Python for commercial use, to sell copies of Python in source or binary form (modified or unmodified), or to sell products that incorporate Python in some form. We would still like to know about all commercial use of Python, of course.

請看Python軟體基金會的授權頁面<https://www.python.org/psf/license/>有更完整的授權說明

The Python logo is trademarked, and in certain cases permission is required to use it. Consult the Trademark Usage Policy for more information.

### 為什麼Python被創造出來

Guido van Rossum寫下這篇」非常長」的簡述說明Python的由來

> I had extensive experience with implementing an interpreted language in the ABC group at CWI, and from working with this group I had learned a lot about language design. This is the origin of many Python features, including the use of indentation for statement grouping and the inclusion of very-high-level data types (although the details are all different in Python).

> I had a number of gripes about the ABC language, but also liked many of its features. It was impossible to extend the ABC language (or its implementation) to remedy my complaints – in fact its lack of extensibility was one of its biggest problems. I had some experience with using Modula-2+ and talked with the designers of Modula-3 and read the Modula-3 report. Modula-3 is the origin of the syntax and semantics used for exceptions, and some other Python features.

> I was working in the Amoeba distributed operating system group at CWI. We needed a better way to do system administration than by writing either C programs or Bourne shell scripts, since Amoeba had its own system call interface which wasn’t easily accessible from the Bourne shell. My experience with error handling in Amoeba made me acutely aware of the importance of exceptions as a programming language feature.

> It occurred to me that a scripting language with a syntax like ABC but with access to the Amoeba system calls would fill the need. I realized that it would be foolish to write an Amoeba-specific language, so I decided that I needed a language that was generally extensible.

> During the 1989 Christmas holidays, I had a lot of time on my hand, so I decided to give it a try. During the next year, while still mostly working on it in my own time, Python was used in the Amoeba project with increasing success, and the feedback from colleagues made me add many early improvements.

> In February 1991, after just over a year of development, I decided to post to USENET. The rest is in the `Misc/HISTORY` file.

### 什麼是Python擅長的事情

Python是高階語言及一般任何用途都可以使用的語言，可以用來解決不同的問題

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, CGI programming), 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 Python 標準函式庫 (Standard Library) 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.

### How does the Python version numbering scheme work?

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, incremented for less earth-shattering changes. C is the micro-level – it is incremented for each bugfix release. See PEP 6 for more information about bugfix releases.

Not all releases are bugfix releases. In the run-up to a new major 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, and the suffix for a release candidate version is 「cN」 for some small number N. In other words, all versions labeled 2.0aN precede the versions labeled 2.0bN, which precede versions labeled 2.0cN, and those precede 2.0.

You may also find version numbers with a 「+」 suffix, e.g. 「2.2+」. These are unreleased versions, built directly from the CPython development repository. In practice, after a final minor release is made, the version is incremented to the next minor version, which becomes the 「a0」 version, e.g. 「2.4a0」.

See also the documentation for `sys.version`, `sys.hexversion`, and `sys.version_info`.

### 我如何拿到Python的原始碼

The latest Python source distribution is always available from python.org, at https://www.python.org/downloads/. The latest development sources can be obtained at https://github.com/python/cpython/.

The source distribution is a gzipped tar file containing the complete C source, Sphinx-formatted documentation, Python library modules, example programs, and several useful pieces of freely distributable software. The source will compile and run out of the box on most UNIX platforms.

Consult the Getting Started section of the Python Developer’s Guide for more information on getting the source code and compiling it.

### 如何取得Python的相關文件

The standard documentation for the current stable version of Python is available at https://docs.python.org/3/. PDF, plain text, and downloadable HTML versions are also available at 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.

### 我從來沒寫過程式，有沒有Python的教學

There are numerous tutorials and books available. The standard documentation includes Python 教學.

Consult the Beginner’s Guide to find information for beginning Python programmers, including lists of tutorials.

### 有沒有新手的群組或是郵件群組討論Python

There is a newsgroup, comp.lang.python, and a mailing list, python-list. The newsgroup and mailing list are gatewayed into each other – if you can read news it’s unnecessary to subscribe to the mailing list. comp.lang.python is high-traffic, receiving hundreds of postings every day, and Usenet readers are often more able to cope with this volume.

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.

More info about other mailing lists and newsgroups can be found at https://www.python.org/community/lists/.

### How do I get a beta test version of Python?

Alpha and beta releases are available from https://www.python.org/downloads/. All releases are announced on the comp.lang.python and comp.lang.python.announce newsgroups and on the Python home page at https://www.python.org/; an RSS feed of news is available.

You can also access the development version of Python through Git. See The Python Developer’s Guide for details.

### How do I submit bug reports and patches for Python?

To report a bug or submit a patch, please use the Roundup installation at https://bugs.python.org/.

You must have a Roundup account to report bugs; this makes it possible for us to contact you if we have follow-up questions. It will also enable Roundup to send you updates as we act on your bug. If you had previously used SourceForge to report bugs to Python, you can obtain your Roundup password through Roundup’s password reset procedure.

For more information on how Python is developed, consult the Python Developer’s Guide.

### Are there any published articles about Python that I can reference?

It’s probably best to cite your favorite book about Python.

最早討論Python的文章在1991年，但現在來看已經有點過時

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

### 有沒有關於Python的書

是的已經有很多書出版，可以參考這個連結的參考書目 https://wiki.python.org/moin/PythonBooks

你也可以上網搜尋網路書店關鍵字為」Python」，但不要使用」Monty Python」當作關鍵字。或者可以搜尋」Python」和」語言」

### www.python.org 這個非營利組織位於哪裡

The Python project’s infrastructure is located all over the world. www.python.org is graciously hosted by Rackspace, with CDN caching provided by Fastly. Upfront Systems hosts bugs.python.org. Many other Python services like the Wiki are hosted by Oregon State University Open Source Lab.

### 為什麼要取名為Python

When he began implementing Python, Guido van Rossum was also reading the published scripts from 「Monty Python’s Flying Circus」, a BBC comedy series from the 1970s. Van Rossum thought he needed a name that was short, unique, and slightly mysterious, so he decided to call the language Python.

### 我需要喜歡蒙提·派森的飛行馬戲團這個節目嗎

不需要，但它有幫助 :)

## Python在真實世界

### Python穩定性如何

非常穩定。自從1991年開始大約每隔6到18個月會釋出更新版，而且看起來會繼續更新下去。現在大約18個月會有主要的更新

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. There are two production-ready version of Python: 2.x and 3.x, but the recommended one at this times is Python 3.x. Although Python 2.x is still widely used, it will not be maintained after January 1, 2020. Python 2.x was known for having more third-party libraries available, however, by the time of this writing, most of the widely used libraries support Python 3.x, and some are even dropping the Python 2.x support.

### 有多少人使用Python

大約有超過一萬個使用者，實際上有多少人是很難準確的估算

Python is available for free download, so there are no sales figures, and it’s available from many different sites and packaged with many Linux distributions, so download statistics don’t tell the whole story either.

The comp.lang.python newsgroup is very active, but not all Python users post to the group or even read it.

### 有沒有任何重要的案子使用Python完成開發

See https://www.python.org/about/success for a list of projects that use Python. Consulting the proceedings for past Python conferences will reveal contributions from many different companies and organizations.

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.

### 對於程式開發者Python對於未來有什麼期待

See https://www.python.org/dev/peps/ 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.

### Is it reasonable to propose incompatible changes to Python?

In general, no. There are already millions of lines of Python code around the world, so any change in the language that invalidates more than a very small fraction of existing programs has to be frowned upon. Even if you can provide a conversion program, there’s still the problem of updating all documentation; many books have been written about Python, and we don’t want to invalidate them all at a single stroke.

Providing a gradual upgrade path is necessary if a feature has to be changed. PEP 5 describes the procedure followed for introducing backward-incompatible changes while minimizing disruption for users.

### Python對於入門的程式設計者而言是否為好的程式語言

是的

It is still common to start students with a procedural and statically typed language such as Pascal, C, or a subset of C++ or Java. Students may be better served by learning Python as their first language. Python has a very simple and consistent syntax and a large standard library and, most importantly, using Python in a beginning programming course lets students concentrate on important programming skills such as problem decomposition and data type design. With Python, students can be quickly introduced to basic concepts such as loops and procedures. They can probably even work with user-defined objects in their very first course.

For a student who has never programmed before, using a statically typed language seems unnatural. It presents additional complexity that the student must master and slows the pace of the course. The students are trying to learn to think like a computer, decompose problems, design consistent interfaces, and encapsulate data. While learning to use a statically typed language is important in the long term, it is not necessarily the best topic to address in the students』 first programming course.

Many other aspects of Python make it a good first language. Like Java, Python has a large standard library so that students can be assigned programming projects very early in the course that do something. Assignments aren’t restricted to the standard four-function calculator and check balancing programs. By using the standard library, students can gain the satisfaction of working on realistic applications as they learn the fundamentals of programming. Using the standard library also teaches students about code reuse. Third-party modules such as PyGame are also helpful in extending the students』 reach.

Python’s interactive interpreter enables students to test language features while they’re programming. They can keep a window with the interpreter running while they enter their program’s source in another window. If they can’t remember the methods for a list, they can do something like this:

    >>> 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]

With the interpreter, documentation is never far from the student as they are programming.

There are also good IDEs for Python. IDLE is a cross-platform IDE for Python that is written in Python using Tkinter. PythonWin is a Windows-specific IDE. 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.

If you want to discuss Python’s use in education, you may be interested in joining the edu-sig mailing list.