diff --git a/libcloud/compute/drivers/ec2.py b/libcloud/compute/drivers/ec2.py
index c070d79..df71eb6 100644
--- a/libcloud/compute/drivers/ec2.py
+++ b/libcloud/compute/drivers/ec2.py
@@ -2530,7 +2530,7 @@
         """
         params = {'Action': 'CopyImage',
                   'SourceRegion': source_region,
-                  'SourceImageId':    image.id}
+                  'SourceImageId': image.id}
 
         if name is not None:
             params['Name'] = name
@@ -2791,7 +2791,7 @@
         """
         params = {'Action': 'CreateVpc',
                   'CidrBlock': cidr_block,
-                  'InstanceTenancy':  instance_tenancy}
+                  'InstanceTenancy': instance_tenancy}
 
         response = self.connection.request(self.path, params=params).object
         element = response.findall(fixxpath(xpath='vpc',
@@ -5422,9 +5422,9 @@
                             xpath='groupSet/item',
                             namespace=NAMESPACE):
             groups.append({
-                'group_id':   findtext(element=item,
-                                       xpath='groupId',
-                                       namespace=NAMESPACE),
+                'group_id': findtext(element=item,
+                                     xpath='groupId',
+                                     namespace=NAMESPACE),
                 'group_name': findtext(element=item,
                                        xpath='groupName',
                                        namespace=NAMESPACE)
diff --git a/libcloud/compute/drivers/profitbricks.py b/libcloud/compute/drivers/profitbricks.py
index 7b23cab..fa33f0c 100644
--- a/libcloud/compute/drivers/profitbricks.py
+++ b/libcloud/compute/drivers/profitbricks.py
@@ -96,7 +96,7 @@
         soap_env = ET.Element('soapenv:Envelope', {
             'xmlns:soapenv': 'http://schemas.xmlsoap.org/soap/envelope/',
             'xmlns:ws': 'http://ws.api.profitbricks.com/'
-            })
+        })
         ET.SubElement(soap_env, 'soapenv:Header')
         soap_body = ET.SubElement(soap_env, 'soapenv:Body')
         soap_req_body = ET.SubElement(soap_body, 'ws:%s' % (data['action']))
diff --git a/libcloud/dns/drivers/softlayer.py b/libcloud/dns/drivers/softlayer.py
index 43a537c..04b4a8c 100644
--- a/libcloud/dns/drivers/softlayer.py
+++ b/libcloud/dns/drivers/softlayer.py
@@ -200,7 +200,7 @@
             'mxPriority': item['mxPriority'],
             'refresh': item['refresh'],
             'retry': item['retry'],
-            }
+        }
         record = Record(
             id=item['id'],
             name=item['host'],
diff --git a/libcloud/httplib_ssl.py b/libcloud/httplib_ssl.py
index bd138a7..52d1ed1 100644
--- a/libcloud/httplib_ssl.py
+++ b/libcloud/httplib_ssl.py
@@ -164,9 +164,9 @@
             j = host.rfind(']')         # ipv6 addresses have [...]
             if i > j:
                 try:
-                    port = int(host[i+1:])
+                    port = int(host[i + 1:])
                 except ValueError:
-                    msg = "nonnumeric port: '%s'" % host[i+1:]
+                    msg = "nonnumeric port: '%s'" % (host[i + 1:])
                     raise httplib.InvalidURL(msg)
                 host = host[:i]
             else:
diff --git a/libcloud/loadbalancer/drivers/brightbox.py b/libcloud/loadbalancer/drivers/brightbox.py
index 22310d4..9788a1e 100644
--- a/libcloud/loadbalancer/drivers/brightbox.py
+++ b/libcloud/loadbalancer/drivers/brightbox.py
@@ -102,7 +102,9 @@
 
         data = self.connection.request(path).object
 
-        func = lambda data: self._node_to_member(data, balancer)
+        def func(data):
+            return self._node_to_member(data, balancer)
+
         return list(map(func, data['nodes']))
 
     def _post(self, path, data={}):
diff --git a/libcloud/storage/drivers/azure_blobs.py b/libcloud/storage/drivers/azure_blobs.py
index 8d00a8d..13d42f6 100644
--- a/libcloud/storage/drivers/azure_blobs.py
+++ b/libcloud/storage/drivers/azure_blobs.py
@@ -654,7 +654,7 @@
             else:
                 headers['x-ms-page-write'] = 'update'
                 headers['x-ms-range'] = 'bytes=%d-%d' % \
-                    (offset, bytes_transferred-1)
+                    (offset, (bytes_transferred - 1))
 
             # Renew lease before updating
             lease.renew()
diff --git a/libcloud/storage/drivers/s3.py b/libcloud/storage/drivers/s3.py
index cd7eb8a..60e5562 100644
--- a/libcloud/storage/drivers/s3.py
+++ b/libcloud/storage/drivers/s3.py
@@ -720,8 +720,9 @@
         if delimiter:
             params['delimiter'] = delimiter
 
-        finder = lambda node, text: node.findtext(fixxpath(xpath=text,
-                                                  namespace=self.namespace))
+        def finder(node, text):
+            return node.findtext(fixxpath(xpath=text,
+                                          namespace=self.namespace))
 
         while True:
             response = self.connection.request(request_path, params=params)
diff --git a/libcloud/test/compute/test_dreamhost.py b/libcloud/test/compute/test_dreamhost.py
index d9cef5c..eed6469 100644
--- a/libcloud/test/compute/test_dreamhost.py
+++ b/libcloud/test/compute/test_dreamhost.py
@@ -236,7 +236,7 @@
                 'ps': 'ps22175',
                 'start_date': '2010-02-25',
                 'type': 'mysql'
-            }]
+        }]
         result = 'success'
         body = json.dumps({'data': data, 'result': result})
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
@@ -249,7 +249,7 @@
             {
                 'description': 'Private MySQL server',
                 'image': 'mysql'
-            }]
+        }]
         result = 'success'
         body = json.dumps({'data': data, 'result': result})
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
diff --git a/libcloud/test/compute/test_openstack.py b/libcloud/test/compute/test_openstack.py
index 0640898..7a20d04 100644
--- a/libcloud/test/compute/test_openstack.py
+++ b/libcloud/test/compute/test_openstack.py
@@ -616,7 +616,7 @@
         return (httplib.OK, body, self.json_content_headers, httplib.responses[httplib.OK])
 
     def _v1_1_auth_INTERNAL_SERVER_ERROR(self, method, url, body, headers):
-        return (httplib.INTERNAL_SERVER_ERROR, "<h1>500: Internal Server Error</h1>",  {'content-type': 'text/html'},
+        return (httplib.INTERNAL_SERVER_ERROR, "<h1>500: Internal Server Error</h1>", {'content-type': 'text/html'},
                 httplib.responses[httplib.INTERNAL_SERVER_ERROR])
 
 
