Anonymous avatar Anonymous committed 630e031

Released version 1.4; out after 1.0.0 is released...

Comments (0)

Files changed (1)

 Approved: news-answers-request@MIT.Edu
 
 Archive-name: python-faq/part1
-Version: 1.3
-Last-modified: 26 Jan 1994
+Version: 1.4
+Last-modified: 2 Feb 1994
 
 This article contains answers to Frequently Asked Questions about
 Python (an object-oriented interpreted programming language -- see
        find anything wrong with them.
   3.4. Q. I get an OverflowError on evaluating 2*2.  What is going on?
   3.5. Q. Trouble building Python 0.9.9 or earlier on platform X.
-  3.6. Q. Trouble building Python 1.0.0 on platform X.
+  3.6. Q. Link errors building Python with STDWIN on SGI Irix.
+  3.7. Q. Link errors for dlopen, dlsym, dlerror from import.o.
+  3.8. Q. Link errors after rerunning the configure script.
+  3.9. Q. The python interpreter complains about options passed to a
+       script (after the script name).
+  3.10. Q. When building on the SGI, make tries to run python to create
+        glmodule.c, but python hasn't been built or installed yet.
+  3.11. Q. Intermittent core dumps and complaints about perfectly valid
+        argument lists to built-in functions (e.g. posix.stat(filename) says
+        "no arguments needed").
+  3.12. Q. Trouble building Python 1.0.0 on NeXT.
+  3.13. Q. Other trouble building Python 1.0.0 on platform X.
 
  4. Programming in Python
-  4.1. Q. Can I create an object class with some methods implemented in
+  4.1. Q. Is there a source code level debugger with breakpoints, step,
+       etc.?
+  4.2. Q. Can I create an object class with some methods implemented in
        C and others in Python (e.g. through inheritance)?  (Also phrased as:
        Can I use a built-in type as base class?)
-  4.2. Q. I assign to a variable in a call to exec() but when I try to
-       use it on the next line I get an error.  What is going on?
-  4.3. Q. Why does that work?
-  4.4. Q. Is there a curses/termcap package for Python?
-  4.5. Q. Is there an equivalent to C's onexit() in Python?
-  4.6. Q. When I define a function nested inside another function, the
+  4.3. Q. Is there a curses/termcap package for Python?
+  4.4. Q. Is there an equivalent to C's onexit() in Python?
+  4.5. Q. When I define a function nested inside another function, the
        nested function seemingly can't access the local variables of the
        outer function.  What is going on?  How do I pass local data to a
        nested function?
-  4.7. Q. How do I iterate over a sequence in reverse order?
-  4.8. Q. My program is too slow.  How do I speed it up?
-  4.9. Q. When I have imported a module, then edit it, and import it
+  4.6. Q. How do I iterate over a sequence in reverse order?
+  4.7. Q. My program is too slow.  How do I speed it up?
+  4.8. Q. When I have imported a module, then edit it, and import it
        again (into the same Python process), the changes don't seem to take
        place.  What is going on?
+  4.9. Q. I have a module in which I want to execute some extra code when it
+       is run as a script.  How do I find out whether I am running as a
+       script?
 
  5. Extending Python
   5.1. Q. Can I create my own functions in C?
 
 Please convert to Python 1.0.0 -- it is much more portable.
 
-3.6. Q. Trouble building Python 1.0.0 on platform X.
+3.6. Q. Link errors building Python with STDWIN on SGI IRIX.
+
+A. Rebuild STDWIN, specifying "CC=cc -cckr" in the Makefile.
+
+3.7. Q. Link errors for dlopen, dlsym, dlerror from import.o.
+
+A. You are probably using the GNU loader which doesn't understand
+dynamic linking.  Manually comment out #define HAVE_DLFCN_H from
+config.h.  (Should be fixed in 1.0.1.)
+
+3.8. Q. Link errors after rerunning the configure script.
+
+A. It is generally necessary to run "make clean" after a configuration
+change.
+
+3.9. Q. The python interpreter complains about options passed to a
+script (after the script name).
+
+A. You are probably linking with GNU getopt, e.g. through -liberty.
+Don't.  (If you are using this because you link with -lreadline, use
+the readline distributed with Python instead.)
+
+3.10. Q. When building on the SGI, make tries to run python to create
+glmodule.c, but python hasn't been built or installed yet.
+
+A. Comment out the line mentioning glmodule.c in Setup and build a
+python without gl first; install it or make sure it is in your $PATH,
+then edit the Setup file again to turn on the gl module, and make
+again.  You don't need to do "make clean"; you do need to run "make
+Makefile" in the Modules subdirectory (or just run "make" at the
+toplevel).
+
+3.11. Q. Intermittent core dumps and complaints about perfectly valid
+argument lists to built-in functions (e.g. posix.stat(filename) says
+"no arguments needed").
+
+A. You are probably using <stdarg.h> instead of <varargs.h>, or the
+other way around.  It may also be that your <stdarg.h> or <varargs.h>
+does not match the code generated by your compiler.  In simple cases,
+it may help to turn comment out the #define HAVE_STDARG_H from the
+generated config.h.
+
+3.12. Q. Trouble building Python 1.0.0 on NeXT.
+
+A. Manually add #define _POSIX_SOURCE to config.h.  (Should be fixed
+in 1.0.1.)
+
+3.13. Q. Other trouble building Python 1.0.0 on platform X.
 
 A. Please email the details to <guido@cwi.nl> and I'll look into it.
 
 4. Programming in Python
 ========================
 
-4.1. Q. Can I create an object class with some methods implemented in
+4.1. Q. Is there a source code level debugger with breakpoints, step,
+etc.?
+
+A. Yes.  Check out module pdb; pdb.help() prints the documentation (or
+you can read it as Lib/pdb.doc).  If you use the STDWIN option,
+there's also a windowing interface, wdb.  You can write your own
+debugger by using the code for pdb or wdb as an example.
+
+4.2. Q. Can I create an object class with some methods implemented in
 C and others in Python (e.g. through inheritance)?  (Also phrased as:
 Can I use a built-in type as base class?)
 
 		def values(self): return self.data.values()
 		def has_key(self, key): return self.data.has_key(key)
 
-4.2. Q. I assign to a variable in a call to exec() but when I try to
-use it on the next line I get an error.  What is going on?
-
-A. The reason why this occurs is too complicated to explain (but see
-the next question).  To fix it is easy, however: simply assign None to
-the variable *before* calling exec().  This will be fixed in the 1.0
-release.
-
-4.3. Q. Why does that work?
-
-A. When parsing your program and converting it into internal pseudo
-code, the interpreter does some optimizations to speed up function
-execution: it figures out the names of all the local variables and
-treats them specially.  Because your assignment is done by exec(), it
-is not seen initially by the parser and the variable is not recognized
-as a local variable.  The default treatment is as a global variable,
-but the exec() statement places it in the local scope, where it is not
-found.  This will be fixed in release 1.0 by making exec into a
-statement; the parser will then be able to switch off the
-optimizations for local variables if it encounters an exec statement
-(recognizing calls to built-in functions is not possible for the
-parser, hence the syntax change to a statement).
-
-4.4. Q. Is there a curses/termcap package for Python?
+4.3. Q. Is there a curses/termcap package for Python?
 
 A. No, but you can use the "alfa" (== character cell) version of
 STDWIN.  (STDWIN == Standard Windows, a portable windowing system
 This will also prepare your program for porting to windowing
 environments such as X11 or the Macintosh.
 
-4.5. Q. Is there an equivalent to C's onexit() in Python?
+4.4. Q. Is there an equivalent to C's onexit() in Python?
 
 A. Yes, if you import sys and assign a function to sys.exitfunc, it
 will be called when your program exits, is killed by an unhandled
 exception, or (on UNIX) receives a SIGHUP or SIGTERM signal.
 
-4.6. Q. When I define a function nested inside another function, the
+4.5. Q. When I define a function nested inside another function, the
 nested function seemingly can't access the local variables of the
 outer function.  What is going on?  How do I pass local data to a
 nested function?
 	print twice(10)
 	# Output: 20
 
-4.7. Q. How do I iterate over a sequence in reverse order?
+4.6. Q. How do I iterate over a sequence in reverse order?
 
 A. If it is a list, the fastest solution is
 
 Unfortunately, this solution is slowest of all, due the the method
 call overhead...
 
-4.8. Q. My program is too slow.  How do I speed it up?
+4.7. Q. My program is too slow.  How do I speed it up?
 
 A. That's a tough one, in general.  There are many tricks to speed up
 Python code; I would consider rewriting parts in C only as a last
 -- the profiling itself can slow your program down by an order of
 magnitude).
 
-4.9. Q. When I have imported a module, then edit it, and import it
+4.8. Q. When I have imported a module, then edit it, and import it
 again (into the same Python process), the changes don't seem to take
 place.  What is going on?
 
 will continue to work with the old version of the objects imported
 thus.
 
+4.9. Q. I have a module in which I want to execute some extra code when it
+is run as a script.  How do I find out whether I am running as a
+script?
+
+A. A module can find out its own module name by alooking at the
+(predefined) global variable __name__.  If this has the value
+'__main__' you are running as a script.  E.g. if you put the following
+on the last line of your module, main() is called only when your
+module is running as a script:
+
+	if __name__ == '__main__': main()
+
 
 5. Extending Python
 ===================
 5.1. Q. Can I create my own functions in C?
 
 A. Yes, you can create built-in modules containing functions,
-variables, exceptions and even new types in C.  This is all explained
-in the file "python/misc/EXTENDING".  Also read the file "DYNLOAD"
-there for hints on how to load such extension modules
+variables, exceptions and even new types in C.  This is explained in
+the document "Extending and Embedding the Python Interpreter" (the
+LaTeX file Doc/ext.tex).  Also read the chapter on dynamic loading.
 
 5.2. Q. Can I create my own functions in C++?
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.