📄 ctut.tex
字号:
\documentclass{manual}
\usepackage[T1]{fontenc}
\usepackage{CJK}
% Things to do:
% Should really move the Python startup file info to an appendix
\title{Python Tutorial}
\input{boilerplate}
\makeindex
\begin{document}
\begin{CJK*}{GBK}{you}
\maketitle
\ifhtml
\chapter*{前言 Front Matter\label{front}}
\fi
\input{copyright}
\begin{abstract}
\noindent Python is an easy to learn, powerful programming
language. It has efficient high-level data structures and a
simple but effective approach to object-oriented programming.
Python's elegant syntax and dynamic typing, together with its
interpreted nature, make it an ideal language for scripting and
rapid application development in many areas on most platforms.
Python
是一种容易学习的强大语言。它包括了高效的高级数据结构,提供了一个简单但很有效的方式进行面向对象编程。Python
优雅的语法,动态类型,以及它天然的解释能力,使其成为了大多数平台上应用于各领域理想的脚本语言以及开发环境。
The Python interpreter and the extensive standard library are
freely available in source or binary form for all major platforms
from the Python Web site, \url{http://www.python.org/}, and can be
freely distributed. The same site also contains distributions of
and pointers to many free third party Python modules, programs and
tools, and additional documentation.
Python 解释器及其扩展标准库的源码和编译版本可以从 Python 的 Web
站点, \url{http://www.python.org/},
及其所有镜像站上免费获得,并且可以自由发布。该站点上也提供了
Python 的一些第三方模块,程序,工具,以及附加的文档。
The Python interpreter is easily extended with new functions and data
types implemented in C or \Cpp{} (or other languages callable from C).
Python is also suitable as an extension language for customizable
applications.
Python 的解释器很容易通过 C 或 \Cpp{}
(或者其它可以由C来调用的语言)来扩展新的函数和数据结构。因此
Python 也很适于作为定制应用的一种扩展语言。
This tutorial introduces the reader informally to the basic concepts
and features of the Python language and system. It helps to have a
Python interpreter handy for hands-on experience, but all examples are
self-contained, so the tutorial can be read off-line as well.
这个手册介绍了一些 Python
语言及其系统的基本知识与概念。这有助于读者对 Python
有一个基本的认识,当然所有的例子都已包括在文中,所以这本手册很适合离线阅读。
For a description of standard objects and modules, see the
\citetitle[../lib/lib.html]{Python Library Reference} document. The
\citetitle[../ref/ref.html]{Python Reference Manual} gives a more
formal definition of the language. To write extensions in C or
\Cpp, read \citetitle[../ext/ext.html]{Extending and Embedding the
Python Interpreter} and \citetitle[../api/api.html]{Python/C API
Reference}. There are also several books covering Python in depth.
需要有关标准对象和模块的详细介绍的话,请查询
\citetitle[../lib/lib.html]{Python 库参考手册}
文档。\citetitle[../ref/ref.html]{Python 参考手册}
提供了更多的关于语言方面的正式说明。需要编写C或\Cpp扩展,请阅读
\citetitle[../ext/ext.html]{Python 解释器的扩展和集成} 以及
\citetitle[../api/api.html]{Python/C API
参考手册}。这几本书涵盖了各个深度上的Python知识。
This tutorial
does not attempt to be comprehensive and cover every single
feature, or even every commonly used feature. Instead, it
introduces many of Python's most noteworthy features, and will
give you a good idea of the language's flavor and style. After
reading it, you will be able to read and write Python modules and
programs, and you will be ready to learn more about the various
Python library modules described in the
\citetitle[../lib/lib.html]{Python Library Reference}.
本手册不会涵盖 Python
的所有功能,也不会去解释所用到的所有相关的知识。相反,它介绍了许多
Python
中最引人注目的功能,这会对读者掌握这门语言的风格大有帮助。读过它后,你应该可以阅读和编写
Python 模块和程序,接下来可以从 \citetitle[../lib/lib.html]{Python
库参考手册} 中进一步学习Python复杂多变的库和模块。
\end{abstract}
\tableofcontents
\chapter{Whetting Your Appetite \label{intro}}
%\chapter{开胃菜 Whetting Your Appetite \label{intro}}
If you ever wrote a large shell script, you probably know this
feeling: you'd love to add yet another feature, but it's already
so slow, and so big, and so complicated; or the feature involves a
system call or other function that is only accessible from C
\ldots Usually the problem at hand isn't serious enough to warrant
rewriting the script in C; perhaps the problem requires
variable-length strings or other data types (like sorted lists of
file names) that are easy in the shell but lots of work to
implement in C, or perhaps you're not sufficiently familiar with
C.
如果你写过大规模的 Shell
脚本,应该会有过这样的体会:你还非常想再加一些别的功能进去,但它已经太大、太慢、太复杂了;或者这个功能需要调用一个系统函数,或者它只适合通过
C 来调用 \ldots 通常这些问题还不足以严肃到需要用 C
重写这个脚本;可能这个功能需要一些类似变长字符串或其它一些在 Shell
脚本中很容易找到的数据类型(比如文件名的有序列表),但它们用 C
来实现就要做大量的工作,或者,你对 C 还不是很熟悉。
Another situation: perhaps you have to work with several C libraries,
and the usual C write/compile/test/re-compile cycle is too slow. You
need to develop software more quickly. Possibly perhaps you've
written a program that could use an extension language, and you don't
want to design a language, write and debug an interpreter for it, then
tie it into your application.
另一种情况:可能你需要使用几个 C 库来工作,通常 C
的编写/编译/测试/重编译周期太慢。你需要尽快的开发软件。也许你需要写一个使用扩展语言的程序,但不想设计一个语言,并为此编写调试一个解释器,然后再把它集成进你的程序。
In such cases, Python may be just the language for you. Python is
simple to use, but it is a real programming language, offering
much more structure and support for large programs than the shell
has. On the other hand, it also offers much more error checking
than C, and, being a \emph{very-high-level language}, it has
high-level data types built in, such as flexible arrays and
dictionaries that would cost you days to implement efficiently in
C. Because of its more general data types Python is applicable to
a much larger problem domain than \emph{Awk} or even \emph{Perl},
yet many things are at least as easy in Python as in those
languages.
遇到以上情况,Python 可能就是你要找的语言。Python
很容易上手,但它是一门真正的编程语言,相对于
Shell,它提供的针对大型程序的支持和结构要多的多。另一方面,它提供了比
C
更多的错误检查,并且,做为一门\emph{高级语言},它拥有内置的高级数据类型,例如可变数组和字典,如果通过
C
来实现的话,这些工作可能让你大干上几天的时间。因为拥有更多的通用数据类型,Python
适合比 \emph{Awk} 甚至 \emph{Perl}
更广泛的问题领域,在其它的很多领域,Python
至少比别的语言要易用得多。
Python allows you to split up your program in modules that can be
reused in other Python programs. It comes with a large collection
of standard modules that you can use as the basis of your programs
--- or as examples to start learning to program in Python. There
are also built-in modules that provide things like file I/O,
system calls, sockets, and even interfaces to graphical user
interface toolkits like Tk.
Python 可以让你把自己的程序分隔成不同的模块,以便在其它的 Python
程序中重用。这样你就可以让自己的程序基于一个很大的标准模块集或者用它们做为示例来学习
Python 编程。Python 中集成了一些类似文件
I/O,系统调用,sockets,甚至像 Tk 这样的用户图形接口。
Python is an interpreted language, which can save you considerable time
during program development because no compilation and linking is
necessary. The interpreter can be used interactively, which makes it
easy to experiment with features of the language, to write throw-away
programs, or to test functions during bottom-up program development.
It is also a handy desk calculator.
Python是一门解释型语言,因为不需要编译和链接的时间,它可以帮你省下一些开发时间。解释器可以交互式使用,这样就可以很方便的测试语言中的各种功能,以便于编写发布用的程序,或者进行自下而上的开发。还可以当它是一个随手可用的计算器。
Python allows writing very compact and readable programs. Programs
written in Python are typically much shorter than equivalent C or
\Cpp{} programs, for several reasons:
Python 可以写出很紧凑和可读性很强的程序。用 Python
写的程序通常比同样的 C 或 \Cpp{}
程序要短得多,这是因为以下几个原因:
\begin{itemize}
\item the high-level data types allow you to express complex
operations in a single statement; \item statement grouping is done
by indentation instead of beginning and ending brackets; \item no
variable or argument declarations are necessary.
\item 高级数据结构使你可以在一个单独的语句中表达出很复杂的操作;
\item 语句的组织依赖于缩进而不是 begin/end 块; \item
不需要变量或参数声明。
\end{itemize}
Python is \emph{extensible}: if you know how to program in C it is easy
to add a new built-in function or module to the interpreter, either to
perform critical operations at maximum speed, or to link Python
programs to libraries that may only be available in binary form (such
as a vendor-specific graphics library). Once you are really hooked,
you can link the Python interpreter into an application written in C
and use it as an extension or command language for that application.
Python 是 \emph{可扩展的}:如果你会用 C
语言写程序,那就可以很容易的为解释器添加新的集成模块和功能,或者优化瓶颈,使其达到最大速度,或者使
Python
能够链接到所需的二进制架构上(比如某个专用的商业图形库)。等你真正熟悉这一切了,你就可以把
Python 集成进由 C 写成的程序,把 Python
当做这个程序的扩展或命令行语言。
By the way, the language is named after the BBC show ``Monty
Python's Flying Circus'' and has nothing to do with nasty
reptiles. Making references to Monty Python skits in
documentation is not only allowed, it is encouraged!
顺便说一下,这个语言的名字来源于 BBC 的“Monty Python's Flying
Circus”节目,和凶猛的爬虫没有任何关系。在文档中引用 Monty Python
典故不仅是允许的,而且还受到鼓励!
%\section{Where From Here \label{where}}
Now that you are all excited about Python, you'll want to examine it
in some more detail. Since the best way to learn a language is
using it, you are invited here to do so.
现在你已经了解了 Python
中所有激动人心的东西,大概你想仔细的试试它了。学习一门语言最好的办法就是使用它,你会很乐于这样做。
In the next chapter, the mechanics of using the interpreter are
explained. This is rather mundane information, but essential for
trying out the examples shown later.
下一节中,我们会很机械的说明解释器的用法。这没有什么神秘的,不过有助于我们练习后面展示的例子。
The rest of the tutorial introduces various features of the Python
language and system through examples, beginning with simple
expressions, statements and data types, through functions and modules,
and finally touching upon advanced concepts like exceptions
and user-defined classes.
本指南其它部分通过例子介绍了 Python
语言和系统的各种功能,开始是简单表达式、语法和数据类型,接下来是函数和模块,最后是诸如异常和自定义类这样的高级内容。
\chapter{Using the Python Interpreter \label{using}}
%\chapter{使用Python解释器 Using the Python Interpreter \label{using}}
\section{调用解释器 Invoking the Interpreter \label{invoking}}
The Python interpreter is usually installed as
\file{/usr/local/bin/python} on those machines where it is
available; putting \file{/usr/local/bin} in your \UNIX{} shell's
search path makes it possible to start it by typing the command
通常 Python 的解释器被安装在目标机器的
\file{/usr/local/bin/python} 目录下;把 \file{/usr/local/bin}
目录放进你的\UNIX{} Shell 的搜索路径里,确保它可以通过输入
\begin{verbatim}
python
\end{verbatim}
to the shell. Since the choice of the directory where the
interpreter lives is an installation option, other places are
possible; check with your local Python guru or system
administrator. (E.g., \file{/usr/local/python} is a popular
alternative location.)
来启动。因为安装路径是可选的,所以也有可能安装在其它位置,你可以与安装
Python
的用户或系统管理员联系。(例如,\file{/usr/local/python}就是一个很常见的选择)
Typing an end-of-file character (\kbd{Control-D} on \UNIX,
\kbd{Control-Z} on Windows) at the primary prompt causes the
interpreter to exit with a zero exit status. If that doesn't
work, you can exit the interpreter by typing the following
commands: \samp{import sys; sys.exit()}.
输入一个文件结束符(\UNIX
上是\kbd{Ctrl+D},Windows上是\kbd{Ctrl+Z})解释器会以0值退出(就是说,没有什么错误,正常退出--译者)。如果这没有起作用,你可以输入以下命令退出:\samp{import
sys; sys.exit()}。
The interpreter's line-editing features usually aren't very
sophisticated. On \UNIX, whoever installed the interpreter may
have enabled support for the GNU readline library, which adds more
elaborate interactive editing and history features. Perhaps the
quickest check to see whether command line editing is supported is
typing Control-P to the first Python prompt you get. If it beeps,
you have command line editing; see Appendix \ref{interacting} for
an introduction to the keys. If nothing appears to happen, or if
\code{\^P} is echoed, command line editing isn't available; you'll
only be able to use backspace to remove characters from the
current line.
解释器的行编辑功能并不很复杂。装在\UNIX 上的解释器可能会有GNU
readline
库支持,这样就可以额外得到精巧的交互编辑和历史记录功能。可能检查命令行编辑器支持能力最方便的方式是在主提示符下输入Ctrl-P。如果有嘟嘟声(计算机扬声器),说明你可以使用命令行编辑功能,从附录
A \ref{interacting}
可以查到快捷键的介绍。如果什么也没有发声,或者\code{\^P}显示了出来,说明命令行编辑功能不可用,你只有用退格键删掉输入的命令了。
The interpreter operates somewhat like the \UNIX{} shell: when called
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -