Implement suggestion from Lawrence Kesteloot in PR#280, to change the
default list of files from () to None, and explicitly test for None
before defaulting to sys.argv[1:].  This means that if you pass in an
explicit empty list, it will read stdin instead of defaulting to
sys.argv[1:].  This fixes a buglet in the test script (when called
with options but without files, it chokes when it tries to interpret
the options as files).

Lawrence adds: "I suspect that this is a safe change, because I can't
imagine someone actively passing in an empty list when they want
sys.argv used."

I agree.
diff --git a/Lib/fileinput.py b/Lib/fileinput.py
index 8f73fad..d1b7617 100644
--- a/Lib/fileinput.py
+++ b/Lib/fileinput.py
@@ -77,7 +77,7 @@
 
 _state = None
 
-def input(files=(), inplace=0, backup=""):
+def input(files=None, inplace=0, backup=""):
     global _state
     if _state and _state._file:
         raise RuntimeError, "input() already active"
@@ -123,15 +123,16 @@
 
 class FileInput:
 
-    def __init__(self, files=(), inplace=0, backup=""):
+    def __init__(self, files=None, inplace=0, backup=""):
         if type(files) == type(''):
             files = (files,)
         else:
-            files = tuple(files)
+            if files is None:
+                files = sys.argv[1:]
             if not files:
-                files = tuple(sys.argv[1:])
-                if not files:
-                    files = ('-',)
+                files = ('-',)
+            else:
+                files = tuple(files)
         self._files = files
         self._inplace = inplace
         self._backup = backup