diff --git a/Lib/inspect.py b/Lib/inspect.py
index 21da7d4..8eeb05d 100644
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -402,12 +402,12 @@
     if ismodule(object):
         if hasattr(object, '__file__'):
             return object.__file__
-        raise TypeError('arg is a built-in module')
+        raise TypeError('%r is a built-in module' % object)
     if isclass(object):
         object = sys.modules.get(object.__module__)
         if hasattr(object, '__file__'):
             return object.__file__
-        raise TypeError('arg is a built-in class')
+        raise TypeError('%r is a built-in class' % object)
     if ismethod(object):
         object = object.im_func
     if isfunction(object):
@@ -418,8 +418,8 @@
         object = object.f_code
     if iscode(object):
         return object.co_filename
-    raise TypeError('arg is not a module, class, method, '
-                    'function, traceback, frame, or code object')
+    raise TypeError('%r is not a module, class, method, '
+                    'function, traceback, frame, or code object' % object)
 
 ModuleInfo = namedtuple('ModuleInfo', 'name suffix mode module_type')
 
@@ -741,7 +741,7 @@
     'varargs' and 'varkw' are the names of the * and ** arguments or None."""
 
     if not iscode(co):
-        raise TypeError('arg is not a code object')
+        raise TypeError('%r is not a code object' % co)
 
     nargs = co.co_argcount
     names = co.co_varnames
@@ -805,7 +805,7 @@
     if ismethod(func):
         func = func.im_func
     if not isfunction(func):
-        raise TypeError('arg is not a Python function')
+        raise TypeError('%r is not a Python function' % func)
     args, varargs, varkw = getargs(func.func_code)
     return ArgSpec(args, varargs, varkw, func.func_defaults)
 
@@ -902,7 +902,7 @@
     else:
         lineno = frame.f_lineno
     if not isframe(frame):
-        raise TypeError('arg is not a frame or traceback object')
+        raise TypeError('%r is not a frame or traceback object' % frame)
 
     filename = getsourcefile(frame) or getfile(frame)
     if context > 0:
