diff --git a/Lib/sgmllib.py b/Lib/sgmllib.py
index bdca8a6..021c8b5 100644
--- a/Lib/sgmllib.py
+++ b/Lib/sgmllib.py
@@ -479,7 +479,7 @@
 def test(args = None):
     import sys
 
-    if not args:
+    if args is None:
         args = sys.argv[1:]
 
     if args and args[0] == '-s':
diff --git a/Lib/shlex.py b/Lib/shlex.py
index e50b9ad..7ffa79c 100644
--- a/Lib/shlex.py
+++ b/Lib/shlex.py
@@ -12,7 +12,7 @@
 class shlex:
     "A lexical analyzer class for simple shell-like syntaxes."
     def __init__(self, instream=None, infile=None):
-        if instream:
+        if instream is not None:
             self.instream = instream
             self.infile = infile
         else:
@@ -47,7 +47,7 @@
         self.instream = newstream
         self.lineno = 1
         if self.debug:
-            if newfile:
+            if newfile is not None:
                 print 'shlex: pushing to file %s' % (self.infile,)
             else:
                 print 'shlex: pushing to stream %s' % (self.instream,)
@@ -188,9 +188,9 @@
 
     def error_leader(self, infile=None, lineno=None):
         "Emit a C-compiler-like, Emacs-friendly error-message leader."
-        if not infile:
+        if infile is None:
             infile = self.infile
-        if not lineno:
+        if lineno is None:
             lineno = self.lineno
         return "\"%s\", line %d: " % (infile, lineno)
 
diff --git a/Lib/shutil.py b/Lib/shutil.py
index 6e3a276..4340127 100644
--- a/Lib/shutil.py
+++ b/Lib/shutil.py
@@ -122,7 +122,7 @@
             exc = sys.exc_info()
             if ignore_errors:
                 pass
-            elif onerror:
+            elif onerror is not None:
                 onerror(cmd[0], cmd[1], exc)
             else:
                 raise exc[0], (exc[1][0], exc[1][1] + ' removing '+cmd[1])
diff --git a/Lib/smtplib.py b/Lib/smtplib.py
index 62b19bd..4311d1a 100755
--- a/Lib/smtplib.py
+++ b/Lib/smtplib.py
@@ -236,7 +236,7 @@
             (code, msg) = self.connect(host, port)
             if code != 220:
                 raise SMTPConnectError(code, msg)
-        if local_hostname:
+        if local_hostname is not None:
             self.local_hostname = local_hostname
         else:
             # RFC 2821 says we should use the fqdn in the EHLO/HELO verb, and
diff --git a/Lib/sre_compile.py b/Lib/sre_compile.py
index e48be72..1c54f67 100644
--- a/Lib/sre_compile.py
+++ b/Lib/sre_compile.py
@@ -145,7 +145,7 @@
 def _compile_charset(charset, flags, code, fixup=None):
     # compile charset subprogram
     emit = code.append
-    if not fixup:
+    if fixup is None:
         fixup = lambda x: x
     for op, av in _optimize_charset(charset, fixup):
         emit(OPCODES[op])
diff --git a/Lib/sre_parse.py b/Lib/sre_parse.py
index a5a8831..1b52967 100644
--- a/Lib/sre_parse.py
+++ b/Lib/sre_parse.py
@@ -80,7 +80,7 @@
     def opengroup(self, name=None):
         gid = self.groups
         self.groups = gid + 1
-        if name:
+        if name is not None:
             ogid = self.groupdict.get(name, None)
             if ogid is not None:
                 raise error, ("redefinition of group name %s as group %d; "
@@ -97,7 +97,7 @@
     # a subpattern, in intermediate form
     def __init__(self, pattern, data=None):
         self.pattern = pattern
-        if not data:
+        if data is None:
             data = []
         self.data = data
         self.width = None
