[Python编程(第4版)].(Programming.Python.4th.Edition).Mark.Lutz.文字版

(yzsuai) #1
But Python’s user base helps support the language, work on extensions, fix bugs, and
so on. It is a true community project. In fact, Python development is now a completely
open process—anyone can inspect the latest source code files or submit patches by
visiting a website (see http://www.python.org for details).
As an open source package, Python development is really in the hands of a very large
cast of developers working in concert around the world—so much so that if the BDFL
ever does pass the torch, Python will almost certainly continue to enjoy the kind of
support its users have come to expect. Though not without pitfalls of their own, open
source projects by nature tend to reflect the needs of their user communities more than
either individuals or shareholders.
Given Python’s popularity, bus attacks seem less threatening now than they once did.
Of course, I can’t speak for Guido.

Step 4: Adding Console Interaction


So far, our database program consists of class instances stored in a shelve file, as coded
in the preceding section. It’s sufficient as a storage medium, but it requires us to run
scripts from the command line or type code interactively in order to view or process its
content. Improving on this is straightforward: simply code more general programs that
interact with users, either from a console window or from a full-blown graphical
interface.


A Console Shelve Interface


Let’s start with something simple. The most basic kind of interface we can code would
allow users to type keys and values in a console window in order to process the database
(instead of writing Python program code). Example 1-21, for instance, implements a
simple interactive loop that allows a user to query multiple record objects in the shelve
by key.


Example 1-21. PP4E\Preview\peopleinteract_query.py


interactive queries


import shelve
fieldnames = ('name', 'age', 'job', 'pay')
maxfield = max(len(f) for f in fieldnames)
db = shelve.open('class-shelve')


while True:
key = input('\nKey? => ') # key or empty line, exc at eof
if not key: break
try:
record = db[key] # fetch by key, show in console


Step 4: Adding Console Interaction | 37
Free download pdf