mirror of
https://github.com/python/cpython.git
synced 2025-01-22 08:25:42 +08:00
several new questions, 1.3 beta mentioned
This commit is contained in:
parent
740f357363
commit
b0a2ce515b
240
Misc/FAQ
240
Misc/FAQ
@ -3,14 +3,14 @@ Newsgroups: comp.lang.python,comp.answers,news.answers
|
||||
Followup-to: comp.lang.python
|
||||
From: guido@cwi.nl (Guido van Rossum)
|
||||
Reply-to: guido@cnri.reston.va.us (Guido van Rossum)
|
||||
Expires: Fri, 1 Sep 1995 00:00:00 GMT
|
||||
Expires: Sun, 1 Oct 1995 00:00:00 GMT
|
||||
Supersedes: <DCA29p.A9A@cwi.nl>
|
||||
Approved: news-answers-request@MIT.Edu
|
||||
|
||||
Archive-name: python-faq/part1
|
||||
Submitted-by: Guido van Rossum <guido@cwi.nl>
|
||||
Version: 1.25++
|
||||
Last-modified: 25 July 1995
|
||||
Version: 1.27
|
||||
Last-modified: 28 August 1995
|
||||
|
||||
This article contains answers to Frequently Asked Questions about
|
||||
Python (an object-oriented interpreted programming language -- see
|
||||
@ -21,13 +21,12 @@ redistribution of this FAQ is allowed. Printed redistribution only
|
||||
with permission of the author. No warranties.
|
||||
|
||||
Author's address:
|
||||
Guido van Rossum
|
||||
CWI, dept. CST
|
||||
Kruislaan 413
|
||||
P.O. Box 94079
|
||||
1090 GB Amsterdam
|
||||
The Netherlands
|
||||
Email: <guido@cwi.nl>
|
||||
Guido van Rossum
|
||||
C.N.R.I.
|
||||
1895 Preston White Drive
|
||||
Reston, VA 22091
|
||||
U.S.A.
|
||||
Email: <guido@python.org>, <guido@cnri.reston.va.us>, <guido@cwi.nl>
|
||||
|
||||
The latest version of this FAQ is available by anonymous ftp from
|
||||
<URL:ftp://ftp.python.org/pub/python/FAQ>. It will also be posted
|
||||
@ -49,7 +48,7 @@ This FAQ is divided in the following chapters:
|
||||
|
||||
1. General information and availability
|
||||
2. Python in the real world
|
||||
3. Building Python
|
||||
3. Building Python and Other Known Bugs
|
||||
4. Programming in Python
|
||||
5. Extending Python
|
||||
6. Python's design
|
||||
@ -89,8 +88,9 @@ Here's an overview of the questions per chapter:
|
||||
2.5. Q. When will the next version be released?
|
||||
2.6. Q. What new developments are expected for Python in the future?
|
||||
2.7. Q. Is it reasonable to propose incompatible changes to Python?
|
||||
2.8. Q. What is the future of Python?
|
||||
|
||||
3. Building Python
|
||||
3. Building Python and Other Known Bugs
|
||||
3.1. Q. Is there a test set?
|
||||
3.2. Q. When running the test set, I get complaints about floating point
|
||||
operations, but when playing with floating point operations I cannot
|
||||
@ -110,6 +110,10 @@ Here's an overview of the questions per chapter:
|
||||
3.13. Q. How to configure dynamic loading on Lixux.
|
||||
3.14. Q. Under Solaris 2.x, using GCC, how do I use shared libraries?
|
||||
3.15. Q. Errors when linking with a shared library containing C++ code.
|
||||
3.16. Q. Tk menus don't work properly in Python 1.2
|
||||
3.17. Q. I built with tkintermodule.c enabled but get "Tkinter not found"
|
||||
3.18. Q. I built with Tk 4.0 but Tkinter complains about the Tk version
|
||||
3.19. Q. Tk doesn't work right on DEC Alpha
|
||||
|
||||
4. Programming in Python
|
||||
4.1. Q. Is there a source code level debugger with breakpoints, step,
|
||||
@ -176,10 +180,10 @@ Here's an overview of the questions per chapter:
|
||||
5.8. Q. How do I call an object's method from C?
|
||||
5.9. Q. How do I catch the output from print_error()?
|
||||
5.10. Q. How do I access a module written in Python from C?
|
||||
5.11. Q. How do I interface to C++ objects from Python?
|
||||
|
||||
6. Python's design
|
||||
6.1. Q. Why isn't there a generic copying operation for objects in
|
||||
Python?
|
||||
6.1. Q. Why isn't there a generic copying operation for objects in Python?
|
||||
6.2. Q. Why isn't there a generic way to implement persistent objects
|
||||
in Python? (Persistent == automatically saved to and restored from
|
||||
disk.)
|
||||
@ -199,6 +203,7 @@ Here's an overview of the questions per chapter:
|
||||
6.11. Q. Why can't lambda forms contain statements?
|
||||
6.12. Q. Why is there no more efficient way of iterating over a dictionary
|
||||
than first constructing the list of keys()?
|
||||
6.13. Q. Can Python be compiled to machine code, C or some other language?
|
||||
|
||||
7. Using Python on non-UNIX platforms
|
||||
7.1. Q. Is there a Mac version of Python?
|
||||
@ -225,7 +230,7 @@ question 4.2 in vi, type /^4\.2\. Q/).
|
||||
|
||||
|
||||
1. General information and availability
|
||||
=======================================
|
||||
=======================================
|
||||
|
||||
1.1. Q. What is Python?
|
||||
|
||||
@ -294,7 +299,7 @@ site).
|
||||
A. The following anonymous ftp sites keep mirrors of the Python
|
||||
distribution:
|
||||
|
||||
<URL:ftp://ftp.cwi.nl/pub/python/>
|
||||
<URL:ftp://ftp.cwi.nl/pub/python/>
|
||||
<URL:ftp://gatekeeper.dec.com/pub/plan/python/>
|
||||
<URL:ftp://ftp.uu.net/languages/python/>
|
||||
<URL:ftp://ftp.wustl.edu/graphics/graphics/sgi-stuff/python/>
|
||||
@ -302,7 +307,7 @@ distribution:
|
||||
<URL:ftp://ftp.sunet.se/pub/lang/python/>
|
||||
<URL:ftp://unix.hensa.ac.uk/mirrors/uunet/languages/python/>
|
||||
<URL:ftp://ftp.sterling.com/programming/languages/python/>
|
||||
<URL:ftp://ftp.ibp.fr/pub/python/>
|
||||
<URL:ftp://ftp.ibp.fr/pub/python/>
|
||||
<URL:ftp://ftp.switch.ch/software/sources/python/>
|
||||
<URL:ftp://ftp.informatik.tu-muenchen.de/pub/comp/programming/languages/python/>
|
||||
|
||||
@ -484,6 +489,10 @@ on the net since then.
|
||||
|
||||
Missing-him-too-ly yours...
|
||||
|
||||
PS: support for Python's Emacs mode (Misc/python-mode.el in the
|
||||
distribution) has been taken up by Barry Warsaw. Questions about it
|
||||
should be mailed to <python-mode@python.org>.
|
||||
|
||||
|
||||
2. Python in the real world
|
||||
===========================
|
||||
@ -499,6 +508,9 @@ is even less meaningful. I see new names on the newsgroup all the
|
||||
time and my best guess is that there are currently at least several
|
||||
thousands of users.
|
||||
|
||||
Another statistic is the number of accesses to the Python WWW server.
|
||||
Have a look at <URL:http://www.python.org/stats/>.
|
||||
|
||||
2.2. Q. Have any significant projects been done in Python?
|
||||
|
||||
A. Here at CWI (the home of Python), we have written a 20,000 line
|
||||
@ -516,6 +528,8 @@ The University of California, Irvine uses a student administration
|
||||
system called TELE-Vision written entirely in Python. Contact: Ray
|
||||
Price <rlprice@uci.edu>.
|
||||
|
||||
See also the next question.
|
||||
|
||||
If you have done a significant project in Python that you'd like to be
|
||||
included in the list above, send me email!
|
||||
|
||||
@ -549,6 +563,13 @@ Individuals at many other companies are using Python for internal
|
||||
development or for as yet unannounced products (witness their
|
||||
contributions to the Python mailing list or newsgroup).
|
||||
|
||||
SGI has advertised in the Python list looking for Python programmers
|
||||
for a project involving interactive television.
|
||||
|
||||
See also the workshop minutes at
|
||||
<URL:http://www.python.org/workshops/> -- in general the WWW server is
|
||||
more up to date than the FAQ for these issues.
|
||||
|
||||
Python has also been elected as an extension language by MADE, a
|
||||
consortium supported by the European Committee's ESPRIT program and
|
||||
consisting of Bull, CWI and some other European companies. Contact:
|
||||
@ -565,16 +586,17 @@ in the early stages of development, in fact new, stable releases
|
||||
|
||||
2.5. Q. When will the next version be released?
|
||||
|
||||
A. I am planning to release 1.3 in September or early October 1995.
|
||||
It will contain keyword parameters as the most important new language
|
||||
feature. Beta versions may be available as early as August.
|
||||
A. I am planning to release 1.3 in early October 1995. It will
|
||||
contain keyword parameters as the most important new language feature.
|
||||
A beta version was made available in August, more beta versions may
|
||||
appear.
|
||||
|
||||
2.6. Q. What new developments are expected for Python in the future?
|
||||
|
||||
A. See my Work-In-Progress web page, currently at
|
||||
<URL:http://www.python.org:~guido/WIP.html>, and the pages for the
|
||||
Second Python Workshop (best reached via the Python home page,
|
||||
<URL:http://www.python.org/>).
|
||||
<URL:http://www.python.org/>). Also follow the newsgroup discussions!
|
||||
|
||||
2.7. Q. Is it reasonable to propose incompatible changes to Python?
|
||||
|
||||
@ -585,9 +607,28 @@ upon. Even if you can provide a conversion program, there still is
|
||||
the problem of updating all documentation. Providing a gradual
|
||||
upgrade path is the only way if a feature has to be changed.
|
||||
|
||||
2.8. Q. What is the future of Python?
|
||||
|
||||
3. Building Python
|
||||
==================
|
||||
A. If I knew, I'd be rich :-)
|
||||
|
||||
Seriously, the formation of the PSA (Pyton Software Activity, see
|
||||
<URL:http://www.python.org/psa/>) ensures some kind of support even in
|
||||
the (unlikely! event that I'd be hit by a bus (actually, here in the
|
||||
US, a car accident would be more likely :-), were to join a nunnery,
|
||||
or would be head-hunted. A large number of Python users have become
|
||||
experts at Python programming as well as maintenance of the
|
||||
implementation, and would easily fill the vacuum created by my
|
||||
disappearance.
|
||||
|
||||
In the mean time, I have no plans to disappear -- rather, I am
|
||||
committed to improving Python, and my current benefactor, CNRI (see
|
||||
<URL:http://www.cnri.reston.va.us>) is just as committed to continue
|
||||
its support of Python and the PSA. In fact, we have great plans for
|
||||
Python -- we just can't tell yet!
|
||||
|
||||
|
||||
3. Building Python and Other Known Bugs
|
||||
=======================================
|
||||
|
||||
3.1. Q. Is there a test set?
|
||||
|
||||
@ -797,6 +838,42 @@ A. Link the main Python binary with C++. Change the definition of
|
||||
LINKCC in Modules/Makefile to be your C++ compiler. You may have to
|
||||
edit config.c slightly to make it compilable with C++.
|
||||
|
||||
3.16. Q. Tk menus don't work properly in Python 1.2.
|
||||
|
||||
A. There's a bug in Tkinter.py; remove ClassType and InstanceType from
|
||||
the definition of CallableTypes near the top of Lib/tkinter/Tkinter.py.
|
||||
|
||||
3.17. Q. I built with tkintermodule.c enabled but get "Tkinter not found".
|
||||
|
||||
A. Tkinter.py (note: upper case T) lives in a subdirectory of Lib,
|
||||
Lib/tkinter. If you are using the default module search path, you
|
||||
probably didn't enable the line in the Modules/Setup file defining
|
||||
TKPATH; if you use the environment variable PYTHONPATH, you'll have to
|
||||
add the proper tkinter subdirectory.
|
||||
|
||||
3.18. Q. I built with Tk 4.0 but Tkinter complains about the Tk version.
|
||||
|
||||
A. Several things could cause this. You most likely have a Tk 3.6
|
||||
installation that wasn't completely eradicated by the Tk 4.0
|
||||
installation (which tends to add "4.0" to its installed files). You
|
||||
may have the Tk 3.6 support library installed in the place where the
|
||||
Tk 4.0 support files should be (default /usr/local/lib/tk/); you may
|
||||
have compiled Python with the old tk.h header file (yes, this actually
|
||||
compiles!); you may actually have linked with Tk 3.6 even though Tk
|
||||
4.0 is also around. Similar for Tcl 7.4 vs. Tcl 7.3.
|
||||
|
||||
3.19. Q. Tk doesn't work right on DEC Alpha.
|
||||
|
||||
A. You probably compiled either Tcl, Tk or Python with gcc. Don't.
|
||||
For this platform, which has 64-bit integers, gcc is known to generate
|
||||
broken code. The standard cc (which comes bundled with the OS!)
|
||||
works. If you still prefer gcc, at least try recompiling with cc
|
||||
before reporting problems to the newsgroup or the author; if this
|
||||
fixes the problem, report the bug to the gcc developers instead. (As
|
||||
far as we know, there are no problem with gcc on other platforms --
|
||||
the instabilities seem to be restricted to the DEC Alpha.) See also
|
||||
question 3.6.
|
||||
|
||||
|
||||
4. Programming in Python
|
||||
========================
|
||||
@ -1598,33 +1675,59 @@ the module) as follows:
|
||||
|
||||
Calling setattr(), to assign to variables in the module, also works.
|
||||
|
||||
5.11. Q. How do I interface to C++ objects from Python?
|
||||
|
||||
A. Depending on your requirements, there are many approaches. Begin
|
||||
by reading the "Extending and Embedding" document (Doc/ext.tex, see
|
||||
also <URL:http://www.python.org/doc/>). Realize that for the Python
|
||||
run-time system, there isn't a whole lot of difference between C and
|
||||
C++ -- so the strategy to build a new Python type around a C structure
|
||||
(pointer) type will also work for C++ objects.
|
||||
|
||||
Automatic generation of interfaces between Python and C++ is still at
|
||||
the horizon -- parsing C++ header files requires an almost complete
|
||||
C++ parser, and many features aren't easily translated from C++ to
|
||||
Python: certain forms of operator oveloading, function overloading
|
||||
(best approached by a varargs function which explicitly type-checks
|
||||
its arguments), and reference arguments are just a number of features
|
||||
that are hard to translate correctly if at all.
|
||||
|
||||
The hardest problem is to transparently translate the C++ class
|
||||
hierarchy to Python, so that Python programs derive classes from C++
|
||||
classes. Given suitable constraints, this may be possible, but it
|
||||
would require more space than I have in this FAQ to explain how.
|
||||
In any case, you can get quite a bit done without this, using just the
|
||||
existing classes from Python.
|
||||
|
||||
If this all seems rather daunting, that may be because it is -- C++
|
||||
isn't exactly a baby to handle without gloves! However, people have
|
||||
accomplished amazing feats of interfacing between Python and C++, and
|
||||
a detailed question posted to the Python list is likely to elicit some
|
||||
interesting and useful responses.
|
||||
|
||||
|
||||
6. Python's design
|
||||
==================
|
||||
|
||||
6.1. Q. Why isn't there a generic copying operation for objects in
|
||||
Python?
|
||||
6.1. Q. Why isn't there a generic copying operation for objects in Python?
|
||||
|
||||
A. Hmm. Maybe there should be one, but it's difficult to assign a
|
||||
useful meaning to copying of open files, sockets and windows, or
|
||||
recursive data structures. As long as you design all your classes
|
||||
yourself you are of course free to define a standard base class that
|
||||
defines an overridable copying operation for all the objects you care
|
||||
about. (One practical point: it would have to be a built-in function,
|
||||
not a standard method name, since not all built-in object types have
|
||||
methods; e.g. strings, integers and tuples don't.)
|
||||
A. Historically, there wasn't. However, starting in Python 1.2,
|
||||
there's a library module "copy" which supports both shallow and deep
|
||||
copying of most common Python objects (though not things like open
|
||||
files, sockets or windows), including an extensible mechanism to copy
|
||||
class instances.
|
||||
|
||||
6.2. Q. Why isn't there a generic way to implement persistent objects
|
||||
in Python? (Persistent == automatically saved to and restored from
|
||||
disk.)
|
||||
|
||||
A. Hmm, hmm. Basically for the same reasons as why there is no
|
||||
generic copying operation.
|
||||
|
||||
A partial solution will appear in release 1.2. This will also provide
|
||||
a partial solution to the problem of a generic copying operation.
|
||||
(Partial because it still won't cope with open files etc.; however it
|
||||
does handle user-defined classes!)
|
||||
A. Like the previous question, historically, there wasn't. The
|
||||
library module "pickle" now solves this in a very general way (though
|
||||
you still can't store things like open files, sockests or windows),
|
||||
and the library module "shelve" uses pickle and (g)dbm to create
|
||||
presistent mappings containing arbitrary Python objects. There are
|
||||
some problems with shelve when using gdbm which will be solved in
|
||||
Python 1.3.
|
||||
|
||||
6.3. Q. Why isn't there a switch or case statement in Python?
|
||||
|
||||
@ -1810,6 +1913,52 @@ programs: it's easy never to have it happen during test runs if you
|
||||
only insert or delete a few items per iteration -- but your users will
|
||||
surely hit upon it sooner or later.
|
||||
|
||||
6.13. Q. Can Python be compiled to machine code, C or some other language?
|
||||
|
||||
A. Not easily. Python's high level data types, dynamic typing of
|
||||
objects and run-time invocation of the interpreter (using eval() or
|
||||
exec) together mean that a "compiled" Python program would probably
|
||||
consist mostly of calls into the Python run-time system, even for
|
||||
seemingly simple operations like "x+1". Thus, the performance gain
|
||||
would probably be minimal.
|
||||
|
||||
Internally, Python source code is always translated into a "virtual
|
||||
machine code" or "byte code" representation before it is interpreted
|
||||
(by the "Python virtual machine" or "bytecode interpreter"). In order
|
||||
to avoid the overhead of parsing and translating modules that rarely
|
||||
change over and over again, this byte code is written on a file whose
|
||||
name ends in ".pyc" whenever a module is parsed (from a file whose
|
||||
name ends in ".py"). When the corresponding .py file is changed, it
|
||||
is parsed and translated again and the .pyc file is rewritten. There
|
||||
is no performance difference once the .pyc file has been loaded (the
|
||||
bytecode read from the .pyc file is exactly the same as the bytecode
|
||||
created by direct translation). The only difference is that loading
|
||||
code from a .pyc file is faster than parsing and translating a .py
|
||||
file, so the presence of precompiled .pyc files will generally improve
|
||||
start-up time of Python scripts. If desired, the Lib/compileall.py
|
||||
module/script can be used to force creation of valid .pyc files for a
|
||||
given set of modules.
|
||||
|
||||
If you are looking for a way to translate Python programs in order to
|
||||
distribute them in binary form, without the need to distribute the
|
||||
interpreter and library as well, have a look at the freeze.py script
|
||||
in the Tools/freeze directory. This creates a single binary file
|
||||
incorporating your program, the Python interpreter, and those parts of
|
||||
the Python library that are needed by your program. Of course, the
|
||||
resulting binary will only run on the same type of platform as that
|
||||
used to create it.
|
||||
|
||||
Hints for proper usage of freeze.py:
|
||||
|
||||
- the script must be in a file whose name ends in .py
|
||||
|
||||
- you must have installed Python fully:
|
||||
|
||||
make install
|
||||
make libinstall
|
||||
make inclinstall
|
||||
make libainstall
|
||||
|
||||
|
||||
7. Using Python on non-UNIX platforms
|
||||
=====================================
|
||||
@ -1872,11 +2021,12 @@ else is working on a more complete port, for details watch the list.
|
||||
|
||||
7.8. Q. What about IBM mainframes, or other non-UNIX platforms?
|
||||
|
||||
A. I haven't heard about these, except I remember once hearing about
|
||||
an attempt at an OS/9 port. If you're interested in any of this, go
|
||||
directly to the newsgroup and ask there, you may find exactly what you
|
||||
need. For example, a port to MPE/iX 5.0 on HP3000 computers was just
|
||||
announced, see <URL:http://www.allegro.com/software/>.
|
||||
A. I haven't heard about these, except I remember hearing about an
|
||||
OS/9 port and a port to Vxworks (both operating systems for embedded
|
||||
systems). If you're interested in any of this, go directly to the
|
||||
newsgroup and ask there, you may find exactly what you need. For
|
||||
example, a port to MPE/iX 5.0 on HP3000 computers was just announced,
|
||||
see <URL:http://www.allegro.com/software/>.
|
||||
|
||||
7.9. Q. Where are the source or Makefiles for the non-UNIX versions?
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user