diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py
index 5128a28079..b540fbc5a3 100644
--- a/django/conf/global_settings.py
+++ b/django/conf/global_settings.py
@@ -1,12 +1,15 @@
 # -*- coding: utf-8 -*-
+"""
+Default Django settings. Override these with settings in the module pointed to
+by the DJANGO_SETTINGS_MODULE environment variable.
+"""
 from __future__ import unicode_literals
 
-# Default Django settings. Override these with settings in the module
-# pointed-to by the DJANGO_SETTINGS_MODULE environment variable.
 
 # This is defined here as a do-nothing function because we can't import
 # django.utils.translation -- that module depends on the settings.
-gettext_noop = lambda s: s
+def gettext_noop(s):
+    return s
 
 ####################
 # CORE             #
diff --git a/django/contrib/admin/templatetags/admin_list.py b/django/contrib/admin/templatetags/admin_list.py
index a45cf74bf5..a1fd3b5657 100644
--- a/django/contrib/admin/templatetags/admin_list.py
+++ b/django/contrib/admin/templatetags/admin_list.py
@@ -143,7 +143,9 @@ def result_headers(cl):
         o_list_primary = []  # URL for making this field the primary sort
         o_list_remove = []  # URL for removing this field from sort
         o_list_toggle = []  # URL for toggling order type for this field
-        make_qs_param = lambda t, n: ('-' if t == 'desc' else '') + str(n)
+
+        def make_qs_param(t, n):
+            return ('-' if t == 'desc' else '') + str(n)
 
         for j, ot in ordering_field_columns.items():
             if j == i:  # Same column
@@ -341,7 +343,8 @@ def date_hierarchy(cl):
         month_lookup = cl.params.get(month_field)
         day_lookup = cl.params.get(day_field)
 
-        link = lambda filters: cl.get_query_string(filters, [field_generic])
+        def link(filters):
+            return cl.get_query_string(filters, [field_generic])
 
         if not (year_lookup or month_lookup or day_lookup):
             # select appropriate start level
diff --git a/django/contrib/postgres/validators.py b/django/contrib/postgres/validators.py
index 3f576873f4..69ceeea8ba 100644
--- a/django/contrib/postgres/validators.py
+++ b/django/contrib/postgres/validators.py
@@ -69,10 +69,12 @@ class KeysValidator(object):
 
 
 class RangeMaxValueValidator(MaxValueValidator):
-    compare = lambda self, a, b: a.upper > b
+    def compare(self, a, b):
+        return a.upper > b
     message = _('Ensure that this range is completely less than or equal to %(limit_value)s.')
 
 
 class RangeMinValueValidator(MinValueValidator):
-    compare = lambda self, a, b: a.lower < b
+    def compare(self, a, b):
+        return a.lower < b
     message = _('Ensure that this range is completely greater than or equal to %(limit_value)s.')
diff --git a/django/contrib/staticfiles/storage.py b/django/contrib/staticfiles/storage.py
index d6911c9fd7..58cb847f1f 100644
--- a/django/contrib/staticfiles/storage.py
+++ b/django/contrib/staticfiles/storage.py
@@ -217,11 +217,15 @@ class HashedFilesMixin(object):
         hashed_files = OrderedDict()
 
         # build a list of adjustable files
-        matches = lambda path: matches_patterns(path, self._patterns.keys())
-        adjustable_paths = [path for path in paths if matches(path)]
+        adjustable_paths = [
+            path for path in paths
+            if matches_patterns(path, self._patterns.keys())
+        ]
 
         # then sort the files by the directory level
-        path_level = lambda name: len(name.split(os.sep))
+        def path_level(name):
+            return len(name.split(os.sep))
+
         for name in sorted(paths.keys(), key=path_level, reverse=True):
 
             # use the original, local file, not the copied-but-unprocessed
diff --git a/django/core/cache/backends/memcached.py b/django/core/cache/backends/memcached.py
index 40f13183d4..1573746329 100644
--- a/django/core/cache/backends/memcached.py
+++ b/django/core/cache/backends/memcached.py
@@ -146,8 +146,7 @@ class BaseMemcachedCache(BaseCache):
         self._cache.set_multi(safe_data, self.get_backend_timeout(timeout))
 
     def delete_many(self, keys, version=None):
-        l = lambda x: self.make_key(x, version=version)
-        self._cache.delete_multi(map(l, keys))
+        self._cache.delete_multi(self.make_key(key, version=version) for key in keys)
 
     def clear(self):
         self._cache.flush_all()
diff --git a/django/core/management/color.py b/django/core/management/color.py
index 3803ea3e3e..7a32370860 100644
--- a/django/core/management/color.py
+++ b/django/core/management/color.py
@@ -46,7 +46,8 @@ def make_style(config_string=''):
             format = color_settings.get(role, {})
             style_func = termcolors.make_style(**format)
         else:
-            style_func = lambda x: x
+            def style_func(x):
+                return x
         setattr(style, role, style_func)
 
     # For backwards compatibility,
diff --git a/django/core/management/commands/inspectdb.py b/django/core/management/commands/inspectdb.py
index 7c26abba92..3bb8e75924 100644
--- a/django/core/management/commands/inspectdb.py
+++ b/django/core/management/commands/inspectdb.py
@@ -32,8 +32,11 @@ class Command(BaseCommand):
         # 'table_name_filter' is a stealth option
         table_name_filter = options.get('table_name_filter')
 
-        table2model = lambda table_name: re.sub(r'[^a-zA-Z0-9]', '', table_name.title())
-        strip_prefix = lambda s: s[1:] if s.startswith("u'") else s
+        def table2model(table_name):
+            return re.sub(r'[^a-zA-Z0-9]', '', table_name.title())
+
+        def strip_prefix(s):
+            return s[1:] if s.startswith("u'") else s
 
         with connection.cursor() as cursor:
             yield "# This is an auto-generated Django model module."
diff --git a/django/core/management/commands/makemessages.py b/django/core/management/commands/makemessages.py
index 1fe17cad7f..ebec17ff01 100644
--- a/django/core/management/commands/makemessages.py
+++ b/django/core/management/commands/makemessages.py
@@ -365,8 +365,10 @@ class Command(BaseCommand):
             Check if the given path should be ignored or not.
             """
             filename = os.path.basename(path)
-            ignore = lambda pattern: (fnmatch.fnmatchcase(filename, pattern) or
-                fnmatch.fnmatchcase(path, pattern))
+
+            def ignore(pattern):
+                return fnmatch.fnmatchcase(filename, pattern) or fnmatch.fnmatchcase(path, pattern)
+
             return any(ignore(pattern) for pattern in ignore_patterns)
 
         ignore_patterns = [os.path.normcase(p) for p in self.ignore_patterns]
diff --git a/django/core/management/commands/makemigrations.py b/django/core/management/commands/makemigrations.py
index 2153198751..80e4314b3c 100644
--- a/django/core/management/commands/makemigrations.py
+++ b/django/core/management/commands/makemigrations.py
@@ -224,7 +224,10 @@ class Command(BaseCommand):
                     if mig[0] == migration.app_label
                 ]
                 merge_migrations.append(migration)
-            all_items_equal = lambda seq: all(item == seq[0] for item in seq[1:])
+
+            def all_items_equal(seq):
+                return all(item == seq[0] for item in seq[1:])
+
             merge_migrations_generations = zip(*[m.ancestry for m in merge_migrations])
             common_ancestor_count = sum(1 for common_ancestor_generation
                                         in takewhile(all_items_equal, merge_migrations_generations))
diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py
index 09a5438861..8a8a776d48 100644
--- a/django/core/serializers/python.py
+++ b/django/core/serializers/python.py
@@ -70,9 +70,11 @@ class Serializer(base.Serializer):
     def handle_m2m_field(self, obj, field):
         if field.remote_field.through._meta.auto_created:
             if self.use_natural_foreign_keys and hasattr(field.remote_field.model, 'natural_key'):
-                m2m_value = lambda value: value.natural_key()
+                def m2m_value(value):
+                    return value.natural_key()
             else:
-                m2m_value = lambda value: force_text(value._get_pk_val(), strings_only=True)
+                def m2m_value(value):
+                    return force_text(value._get_pk_val(), strings_only=True)
             self._current[field.name] = [m2m_value(related)
                                for related in getattr(obj, field.name).iterator()]
 
@@ -136,7 +138,8 @@ def Deserializer(object_list, **options):
                         else:
                             return force_text(model._meta.pk.to_python(value), strings_only=True)
                 else:
-                    m2m_convert = lambda v: force_text(model._meta.pk.to_python(v), strings_only=True)
+                    def m2m_convert(v):
+                        return force_text(model._meta.pk.to_python(v), strings_only=True)
 
                 try:
                     m2m_data[field.name] = []
diff --git a/django/core/serializers/xml_serializer.py b/django/core/serializers/xml_serializer.py
index 44d745d55d..3d38217612 100644
--- a/django/core/serializers/xml_serializer.py
+++ b/django/core/serializers/xml_serializer.py
@@ -275,7 +275,8 @@ class Deserializer(base.Deserializer):
                     obj_pk = model._meta.pk.to_python(n.getAttribute('pk'))
                 return obj_pk
         else:
-            m2m_convert = lambda n: model._meta.pk.to_python(n.getAttribute('pk'))
+            def m2m_convert(n):
+                return model._meta.pk.to_python(n.getAttribute('pk'))
         return [m2m_convert(c) for c in node.getElementsByTagName("object")]
 
     def _get_model_from_node(self, node, attr):
diff --git a/django/core/validators.py b/django/core/validators.py
index 8c43644ed6..dd18aee3cb 100644
--- a/django/core/validators.py
+++ b/django/core/validators.py
@@ -295,8 +295,6 @@ validate_comma_separated_integer_list = int_list_validator(
 
 @deconstructible
 class BaseValidator(object):
-    compare = lambda self, a, b: a is not b
-    clean = lambda self, x: x
     message = _('Ensure this value is %(limit_value)s (it is %(show_value)s).')
     code = 'limit_value'
 
@@ -319,42 +317,60 @@ class BaseValidator(object):
             and (self.code == other.code)
         )
 
+    def compare(self, a, b):
+        return a is not b
+
+    def clean(self, x):
+        return x
+
 
 @deconstructible
 class MaxValueValidator(BaseValidator):
-    compare = lambda self, a, b: a > b
     message = _('Ensure this value is less than or equal to %(limit_value)s.')
     code = 'max_value'
 
+    def compare(self, a, b):
+        return a > b
+
 
 @deconstructible
 class MinValueValidator(BaseValidator):
-    compare = lambda self, a, b: a < b
     message = _('Ensure this value is greater than or equal to %(limit_value)s.')
     code = 'min_value'
 
+    def compare(self, a, b):
+        return a < b
+
 
 @deconstructible
 class MinLengthValidator(BaseValidator):
-    compare = lambda self, a, b: a < b
-    clean = lambda self, x: len(x)
     message = ungettext_lazy(
         'Ensure this value has at least %(limit_value)d character (it has %(show_value)d).',
         'Ensure this value has at least %(limit_value)d characters (it has %(show_value)d).',
         'limit_value')
     code = 'min_length'
 
+    def compare(self, a, b):
+        return a < b
+
+    def clean(self, x):
+        return len(x)
+
 
 @deconstructible
 class MaxLengthValidator(BaseValidator):
-    compare = lambda self, a, b: a > b
-    clean = lambda self, x: len(x)
     message = ungettext_lazy(
         'Ensure this value has at most %(limit_value)d character (it has %(show_value)d).',
         'Ensure this value has at most %(limit_value)d characters (it has %(show_value)d).',
         'limit_value')
     code = 'max_length'
 
+    def compare(self, a, b):
+        return a > b
+
+    def clean(self, x):
+        return len(x)
+
 
 @deconstructible
 class DecimalValidator(object):
diff --git a/django/db/backends/base/operations.py b/django/db/backends/base/operations.py
index 6e5aff19cd..d68a5aa996 100644
--- a/django/db/backends/base/operations.py
+++ b/django/db/backends/base/operations.py
@@ -204,7 +204,8 @@ class BaseDatabaseOperations(object):
         according to their own quoting schemes.
         """
         # Convert params to contain Unicode values.
-        to_unicode = lambda s: force_text(s, strings_only=True, errors='replace')
+        def to_unicode(s):
+            return force_text(s, strings_only=True, errors='replace')
         if isinstance(params, (list, tuple)):
             u_params = tuple(to_unicode(val) for val in params)
         elif params is None:
diff --git a/django/db/backends/mysql/introspection.py b/django/db/backends/mysql/introspection.py
index 3d0f6f3689..835276d7e1 100644
--- a/django/db/backends/mysql/introspection.py
+++ b/django/db/backends/mysql/introspection.py
@@ -71,7 +71,10 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
         field_info = {line[0]: InfoLine(*line) for line in cursor.fetchall()}
 
         cursor.execute("SELECT * FROM %s LIMIT 1" % self.connection.ops.quote_name(table_name))
-        to_int = lambda i: int(i) if i is not None else i
+
+        def to_int(i):
+            return int(i) if i is not None else i
+
         fields = []
         for line in cursor.description:
             col_name = force_text(line[0])
diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py
index 162a84793d..2071d5ff96 100644
--- a/django/db/models/fields/related.py
+++ b/django/db/models/fields/related.py
@@ -85,7 +85,10 @@ def add_lazy_relation(cls, field, relation, operation):
         "and related methods on the Apps class.",
         RemovedInDjango20Warning, stacklevel=2)
     # Rearrange args for new Apps.lazy_model_operation
-    function = lambda local, related, field: operation(field, related, local)
+
+    def function(local, related, field):
+        return operation(field, related, local)
+
     lazy_related_operation(function, cls, relation, field=field)
 
 
diff --git a/django/db/models/fields/related_descriptors.py b/django/db/models/fields/related_descriptors.py
index 050866efce..8f45a9231b 100644
--- a/django/db/models/fields/related_descriptors.py
+++ b/django/db/models/fields/related_descriptors.py
@@ -300,7 +300,10 @@ class ReverseOneToOneDescriptor(object):
         queryset._add_hints(instance=instances[0])
 
         rel_obj_attr = attrgetter(self.related.field.attname)
-        instance_attr = lambda obj: obj._get_pk_val()
+
+        def instance_attr(obj):
+            return obj._get_pk_val()
+
         instances_dict = {instance_attr(inst): inst for inst in instances}
         query = {'%s__in' % self.related.field.name: instances}
         queryset = queryset.filter(**query)
diff --git a/django/db/models/options.py b/django/db/models/options.py
index 2f1f930ec5..4fdcc025f7 100644
--- a/django/db/models/options.py
+++ b/django/db/models/options.py
@@ -371,11 +371,17 @@ class Options(object):
         # use that property directly because related_model is a cached property,
         # and all the models may not have been loaded yet; we don't want to cache
         # the string reference to the related_model.
-        is_not_an_m2m_field = lambda f: not (f.is_relation and f.many_to_many)
-        is_not_a_generic_relation = lambda f: not (f.is_relation and f.one_to_many)
-        is_not_a_generic_foreign_key = lambda f: not (
-            f.is_relation and f.many_to_one and not (hasattr(f.remote_field, 'model') and f.remote_field.model)
-        )
+        def is_not_an_m2m_field(f):
+            return not (f.is_relation and f.many_to_many)
+
+        def is_not_a_generic_relation(f):
+            return not (f.is_relation and f.one_to_many)
+
+        def is_not_a_generic_foreign_key(f):
+            return not (
+                f.is_relation and f.many_to_one and not (hasattr(f.remote_field, 'model') and f.remote_field.model)
+            )
+
         return make_immutable_fields_list(
             "fields",
             (f for f in self._get_fields(reverse=False) if
diff --git a/django/http/request.py b/django/http/request.py
index 22405d8306..d6ce49d755 100644
--- a/django/http/request.py
+++ b/django/http/request.py
@@ -481,9 +481,12 @@ class QueryDict(MultiValueDict):
         output = []
         if safe:
             safe = force_bytes(safe, self.encoding)
-            encode = lambda k, v: '%s=%s' % ((quote(k, safe), quote(v, safe)))
+
+            def encode(k, v):
+                return '%s=%s' % ((quote(k, safe), quote(v, safe)))
         else:
-            encode = lambda k, v: urlencode({k: v})
+            def encode(k, v):
+                return urlencode({k: v})
         for k, list_ in self.lists():
             k = force_bytes(k, self.encoding)
             output.extend(encode(k, force_bytes(v, self.encoding))
diff --git a/django/template/defaultfilters.py b/django/template/defaultfilters.py
index 71727208c3..631118f4b9 100644
--- a/django/template/defaultfilters.py
+++ b/django/template/defaultfilters.py
@@ -639,7 +639,8 @@ def unordered_list(value, autoescape=True):
     if autoescape:
         escaper = conditional_escape
     else:
-        escaper = lambda x: x
+        def escaper(x):
+            return x
 
     def walk_items(item_list):
         item_iterator = iter(item_list)
@@ -850,7 +851,8 @@ def filesizeformat(bytes_):
         value = ungettext("%(size)d byte", "%(size)d bytes", 0) % {'size': 0}
         return avoid_wrapping(value)
 
-    filesize_number_format = lambda value: formats.number_format(round(value, 1), 1)
+    def filesize_number_format(value):
+        return formats.number_format(round(value, 1), 1)
 
     KB = 1 << 10
     MB = 1 << 20
diff --git a/django/test/client.py b/django/test/client.py
index 78a5df5c52..61c2136b09 100644
--- a/django/test/client.py
+++ b/django/test/client.py
@@ -160,10 +160,13 @@ def encode_multipart(boundary, data):
     as an application/octet-stream; otherwise, str(value) will be sent.
     """
     lines = []
-    to_bytes = lambda s: force_bytes(s, settings.DEFAULT_CHARSET)
+
+    def to_bytes(s):
+        return force_bytes(s, settings.DEFAULT_CHARSET)
 
     # Not by any means perfect, but good enough for our purposes.
-    is_file = lambda thing: hasattr(thing, "read") and callable(thing.read)
+    def is_file(thing):
+        return hasattr(thing, "read") and callable(thing.read)
 
     # Each bit of the multipart form data could be either a form value or a
     # file, or a *list* of form values and/or files. Remember that HTTP field
@@ -198,7 +201,8 @@ def encode_multipart(boundary, data):
 
 
 def encode_file(boundary, key, file):
-    to_bytes = lambda s: force_bytes(s, settings.DEFAULT_CHARSET)
+    def to_bytes(s):
+        return force_bytes(s, settings.DEFAULT_CHARSET)
     filename = os.path.basename(file.name) if hasattr(file, 'name') else ''
     if hasattr(file, 'content_type'):
         content_type = file.content_type
diff --git a/django/utils/decorators.py b/django/utils/decorators.py
index 87a702d3d8..7ba31a32e3 100644
--- a/django/utils/decorators.py
+++ b/django/utils/decorators.py
@@ -159,7 +159,8 @@ def make_middleware_decorator(middleware_class):
                     # Defer running of process_response until after the template
                     # has been rendered:
                     if hasattr(middleware, 'process_response'):
-                        callback = lambda response: middleware.process_response(request, response)
+                        def callback(response):
+                            return middleware.process_response(request, response)
                         response.add_post_render_callback(callback)
                 else:
                     if hasattr(middleware, 'process_response'):
diff --git a/django/utils/feedgenerator.py b/django/utils/feedgenerator.py
index 3fae71cdee..367245be22 100644
--- a/django/utils/feedgenerator.py
+++ b/django/utils/feedgenerator.py
@@ -91,7 +91,8 @@ class SyndicationFeed(object):
     def __init__(self, title, link, description, language=None, author_email=None,
             author_name=None, author_link=None, subtitle=None, categories=None,
             feed_url=None, feed_copyright=None, feed_guid=None, ttl=None, **kwargs):
-        to_unicode = lambda s: force_text(s, strings_only=True)
+        def to_unicode(s):
+            return force_text(s, strings_only=True)
         if categories:
             categories = [force_text(c) for c in categories]
         if ttl is not None:
@@ -126,7 +127,8 @@ class SyndicationFeed(object):
         objects, and enclosures, which is an iterable of instances of the
         Enclosure class.
         """
-        to_unicode = lambda s: force_text(s, strings_only=True)
+        def to_unicode(s):
+            return force_text(s, strings_only=True)
         if categories:
             categories = [to_unicode(c) for c in categories]
         if ttl is not None:
diff --git a/django/utils/text.py b/django/utils/text.py
index af80812a0d..46872372ac 100644
--- a/django/utils/text.py
+++ b/django/utils/text.py
@@ -19,7 +19,8 @@ if six.PY2:
 
 
 # Capitalizes the first letter of a string.
-capfirst = lambda x: x and force_text(x)[0].upper() + force_text(x)[1:]
+def capfirst(x):
+    return x and force_text(x)[0].upper() + force_text(x)[1:]
 capfirst = keep_lazy_text(capfirst)
 
 # Set up regular expressions
diff --git a/django/utils/translation/trans_null.py b/django/utils/translation/trans_null.py
index cb909c63f7..7d02fa5607 100644
--- a/django/utils/translation/trans_null.py
+++ b/django/utils/translation/trans_null.py
@@ -24,11 +24,28 @@ def pgettext(context, message):
 def npgettext(context, singular, plural, number):
     return ungettext(singular, plural, number)
 
-activate = lambda x: None
-deactivate = deactivate_all = lambda: None
-get_language = lambda: settings.LANGUAGE_CODE
-get_language_bidi = lambda: settings.LANGUAGE_CODE in settings.LANGUAGES_BIDI
-check_for_language = lambda x: True
+
+def activate(x):
+    return None
+
+
+def deactivate():
+    return None
+
+
+deactivate_all = deactivate
+
+
+def get_language():
+    return settings.LANGUAGE_CODE
+
+
+def get_language_bidi():
+    return settings.LANGUAGE_CODE in settings.LANGUAGES_BIDI
+
+
+def check_for_language(x):
+    return True
 
 
 def gettext(message):
diff --git a/django/views/i18n.py b/django/views/i18n.py
index 37d38d9e74..974b63e194 100644
--- a/django/views/i18n.py
+++ b/django/views/i18n.py
@@ -186,7 +186,10 @@ js_catalog_template = r"""
 
 def render_javascript_catalog(catalog=None, plural=None):
     template = Engine().from_string(js_catalog_template)
-    indent = lambda s: s.replace('\n', '\n  ')
+
+    def indent(s):
+        return s.replace('\n', '\n  ')
+
     context = Context({
         'catalog_str': indent(json.dumps(
             catalog, sort_keys=True, indent=2)) if catalog else None,
diff --git a/setup.cfg b/setup.cfg
index 9ba33169ae..8579282aec 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -4,7 +4,7 @@ install-script = scripts/rpm-install.sh
 
 [flake8]
 exclude = build,.git,./django/utils/lru_cache.py,./django/utils/six.py,./django/conf/app_template/*,./django/dispatch/weakref_backports.py,./tests/.env,./xmlrunner,tests/view_tests/tests/py3_test_debug.py,tests/template_tests/annotated_tag_function.py
-ignore = E123,E128,E402,W503,E731,W601
+ignore = E123,E128,E402,W503,W601
 max-line-length = 119
 
 [isort]
diff --git a/tests/absolute_url_overrides/tests.py b/tests/absolute_url_overrides/tests.py
index 7187456112..6879283083 100644
--- a/tests/absolute_url_overrides/tests.py
+++ b/tests/absolute_url_overrides/tests.py
@@ -10,7 +10,8 @@ class AbsoluteUrlOverrideTests(SimpleTestCase):
         """
         get_absolute_url() functions as a normal method.
         """
-        get_absolute_url = lambda o: '/test-a/%s/' % o.pk
+        def get_absolute_url(o):
+            return '/test-a/%s/' % o.pk
         TestA = self._create_model_class('TestA', get_absolute_url)
 
         self.assertTrue(hasattr(TestA, 'get_absolute_url'))
@@ -21,7 +22,8 @@ class AbsoluteUrlOverrideTests(SimpleTestCase):
         """
         ABSOLUTE_URL_OVERRIDES should override get_absolute_url().
         """
-        get_absolute_url = lambda o: '/test-b/%s/' % o.pk
+        def get_absolute_url(o):
+            return '/test-b/%s/' % o.pk
         with self.settings(
             ABSOLUTE_URL_OVERRIDES={
                 'absolute_url_overrides.testb': lambda o: '/overridden-test-b/%s/' % o.pk,
diff --git a/tests/admin_inlines/tests.py b/tests/admin_inlines/tests.py
index f59f87e6de..450ff1ffda 100644
--- a/tests/admin_inlines/tests.py
+++ b/tests/admin_inlines/tests.py
@@ -729,8 +729,9 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
             reverse('admin:admin_inlines_holder4_add')))
 
         inline_id = '#inner4stacked_set-group'
-        rows_length = lambda: len(self.selenium.find_elements_by_css_selector(
-            '%s .dynamic-inner4stacked_set' % inline_id))
+
+        def rows_length():
+            return len(self.selenium.find_elements_by_css_selector('%s .dynamic-inner4stacked_set' % inline_id))
         self.assertEqual(rows_length(), 3)
 
         add_button = self.selenium.find_element_by_link_text(
@@ -745,8 +746,9 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
             reverse('admin:admin_inlines_holder4_add')))
 
         inline_id = '#inner4stacked_set-group'
-        rows_length = lambda: len(self.selenium.find_elements_by_css_selector(
-            '%s .dynamic-inner4stacked_set' % inline_id))
+
+        def rows_length():
+            return len(self.selenium.find_elements_by_css_selector('%s .dynamic-inner4stacked_set' % inline_id))
         self.assertEqual(rows_length(), 3)
 
         add_button = self.selenium.find_element_by_link_text(
diff --git a/tests/admin_utils/tests.py b/tests/admin_utils/tests.py
index 694c529b76..01ec6702cc 100644
--- a/tests/admin_utils/tests.py
+++ b/tests/admin_utils/tests.py
@@ -111,7 +111,8 @@ class UtilsTests(SimpleTestCase):
             def get_admin_value(self, obj):
                 return ADMIN_METHOD
 
-        simple_function = lambda obj: SIMPLE_FUNCTION
+        def simple_function(obj):
+            return SIMPLE_FUNCTION
 
         site_obj = Site(domain=SITE_NAME)
         article = Article(
diff --git a/tests/flatpages_tests/test_templatetags.py b/tests/flatpages_tests/test_templatetags.py
index 994491e1a0..dbe1446988 100644
--- a/tests/flatpages_tests/test_templatetags.py
+++ b/tests/flatpages_tests/test_templatetags.py
@@ -141,7 +141,8 @@ class FlatpageTemplateTagTests(TestCase):
 
     def test_parsing_errors(self):
         "There are various ways that the flatpages template tag won't parse"
-        render = lambda t: Template(t).render(Context())
+        def render(t):
+            return Template(t).render(Context())
 
         self.assertRaises(TemplateSyntaxError, render,
                           "{% load flatpages %}{% get_flatpages %}")
diff --git a/tests/forms_tests/tests/test_fields.py b/tests/forms_tests/tests/test_fields.py
index 1bab912cfc..45545cdb48 100644
--- a/tests/forms_tests/tests/test_fields.py
+++ b/tests/forms_tests/tests/test_fields.py
@@ -1173,7 +1173,8 @@ class FieldsTests(SimpleTestCase):
         )
 
     def test_choicefield_callable(self):
-        choices = lambda: [('J', 'John'), ('P', 'Paul')]
+        def choices():
+            return [('J', 'John'), ('P', 'Paul')]
         f = ChoiceField(choices=choices)
         self.assertEqual('J', f.clean('J'))
 
diff --git a/tests/lookup/tests.py b/tests/lookup/tests.py
index 203f25406a..bc1f3aacce 100644
--- a/tests/lookup/tests.py
+++ b/tests/lookup/tests.py
@@ -141,7 +141,8 @@ class LookupTests(TestCase):
     def test_values(self):
         # values() returns a list of dictionaries instead of object instances --
         # and you can specify which fields you want to retrieve.
-        identity = lambda x: x
+        def identity(x):
+            return x
         self.assertQuerysetEqual(Article.objects.values('headline'),
             [
                 {'headline': 'Article 5'},
@@ -276,7 +277,8 @@ class LookupTests(TestCase):
         # returned as a list of tuples, rather than a list of dictionaries.
         # Within each tuple, the order of the elements is the same as the order
         # of fields in the values_list() call.
-        identity = lambda x: x
+        def identity(x):
+            return x
         self.assertQuerysetEqual(Article.objects.values_list('headline'),
             [
                 ('Article 5',),
diff --git a/tests/middleware/tests.py b/tests/middleware/tests.py
index bf96f05048..202f7511cd 100644
--- a/tests/middleware/tests.py
+++ b/tests/middleware/tests.py
@@ -707,12 +707,11 @@ class GZipMiddlewareTest(SimpleTestCase):
         """
         Compression is performed on FileResponse.
         """
-        open_file = lambda: open(__file__, 'rb')
-        with open_file() as file1:
+        with open(__file__, 'rb') as file1:
             file_resp = FileResponse(file1)
             file_resp['Content-Type'] = 'text/html; charset=UTF-8'
             r = GZipMiddleware().process_response(self.req, file_resp)
-            with open_file() as file2:
+            with open(__file__, 'rb') as file2:
                 self.assertEqual(self.decompress(b''.join(r)), file2.read())
             self.assertEqual(r.get('Content-Encoding'), 'gzip')
             self.assertIsNot(r.file_to_stream, file1)
diff --git a/tests/model_meta/tests.py b/tests/model_meta/tests.py
index 1dbfca0c8e..cfae4736fa 100644
--- a/tests/model_meta/tests.py
+++ b/tests/model_meta/tests.py
@@ -68,7 +68,8 @@ class DataTests(OptionsBaseTests):
             self.assertEqual([f.attname for f in fields], expected_result)
 
     def test_local_fields(self):
-        is_data_field = lambda f: isinstance(f, Field) and not isinstance(f, related.ManyToManyField)
+        def is_data_field(f):
+            return isinstance(f, Field) and not isinstance(f, related.ManyToManyField)
 
         for model, expected_result in TEST_RESULTS['local_fields'].items():
             fields = model._meta.local_fields
@@ -101,7 +102,8 @@ class M2MTests(OptionsBaseTests):
 
 
 class RelatedObjectsTests(OptionsBaseTests):
-    key_name = lambda self, r: r[0]
+    def key_name(self, r):
+        return r[0]
 
     def test_related_objects(self):
         result_key = 'get_all_related_objects_with_model'
diff --git a/tests/test_client/tests.py b/tests/test_client/tests.py
index ccddf76cf1..d8e0b9d6f0 100644
--- a/tests/test_client/tests.py
+++ b/tests/test_client/tests.py
@@ -690,7 +690,8 @@ class CustomTestClientTest(SimpleTestCase):
         self.assertEqual(hasattr(self.client, "i_am_customized"), True)
 
 
-_generic_view = lambda request: HttpResponse(status=200)
+def _generic_view(request):
+    return HttpResponse(status=200)
 
 
 @override_settings(ROOT_URLCONF='test_client.urls')
diff --git a/tests/utils_tests/test_datastructures.py b/tests/utils_tests/test_datastructures.py
index 99f7a1d05f..d151f12bb5 100644
--- a/tests/utils_tests/test_datastructures.py
+++ b/tests/utils_tests/test_datastructures.py
@@ -126,7 +126,8 @@ class ImmutableListTests(SimpleTestCase):
 class DictWrapperTests(SimpleTestCase):
 
     def test_dictwrapper(self):
-        f = lambda x: "*%s" % x
+        def f(x):
+            return "*%s" % x
         d = DictWrapper({'a': 'a'}, f, 'xx_')
         self.assertEqual(
             "Normal: %(a)s. Modified: %(xx_a)s" % d,