THRIFT-3540 Make python tutorial more in line with PEP8

This closes #786
diff --git a/tutorial/py/PythonClient.py b/tutorial/py/PythonClient.py
index c4559ff..8000483 100755
--- a/tutorial/py/PythonClient.py
+++ b/tutorial/py/PythonClient.py
@@ -19,65 +19,70 @@
 # under the License.
 #
 
-import sys, glob
+import sys
+import glob
 sys.path.append('gen-py')
 sys.path.insert(0, glob.glob('../../lib/py/build/lib*')[0])
 
 from tutorial import Calculator
-from tutorial.ttypes import *
+from tutorial.ttypes import InvalidOperation, Operation, Work
 
 from thrift import Thrift
 from thrift.transport import TSocket
 from thrift.transport import TTransport
 from thrift.protocol import TBinaryProtocol
 
-try:
 
-  # Make socket
-  transport = TSocket.TSocket('localhost', 9090)
+def main():
+    # Make socket
+    transport = TSocket.TSocket('localhost', 9090)
 
-  # Buffering is critical. Raw sockets are very slow
-  transport = TTransport.TBufferedTransport(transport)
+    # Buffering is critical. Raw sockets are very slow
+    transport = TTransport.TBufferedTransport(transport)
 
-  # Wrap in a protocol
-  protocol = TBinaryProtocol.TBinaryProtocol(transport)
+    # Wrap in a protocol
+    protocol = TBinaryProtocol.TBinaryProtocol(transport)
 
-  # Create a client to use the protocol encoder
-  client = Calculator.Client(protocol)
+    # Create a client to use the protocol encoder
+    client = Calculator.Client(protocol)
 
-  # Connect!
-  transport.open()
+    # Connect!
+    transport.open()
 
-  client.ping()
-  print('ping()')
+    client.ping()
+    print('ping()')
 
-  sum = client.add(1,1)
-  print(('1+1=%d' % (sum)))
+    sum = client.add(1, 1)
+    print(('1+1=%d' % (sum)))
 
-  work = Work()
+    work = Work()
 
-  work.op = Operation.DIVIDE
-  work.num1 = 1
-  work.num2 = 0
+    work.op = Operation.DIVIDE
+    work.num1 = 1
+    work.num2 = 0
 
-  try:
-    quotient = client.calculate(1, work)
-    print('Whoa? You know how to divide by zero?')
-  except InvalidOperation as e:
-    print(('InvalidOperation: %r' % e))
+    try:
+        quotient = client.calculate(1, work)
+        print('Whoa? You know how to divide by zero?')
+        print('FYI the answer is %d' % quotient)
+    except InvalidOperation as e:
+        print(('InvalidOperation: %r' % e))
 
-  work.op = Operation.SUBTRACT
-  work.num1 = 15
-  work.num2 = 10
+    work.op = Operation.SUBTRACT
+    work.num1 = 15
+    work.num2 = 10
 
-  diff = client.calculate(1, work)
-  print(('15-10=%d' % (diff)))
+    diff = client.calculate(1, work)
+    print(('15-10=%d' % (diff)))
 
-  log = client.getStruct(1)
-  print(('Check log: %s' % (log.value)))
+    log = client.getStruct(1)
+    print(('Check log: %s' % (log.value)))
 
-  # Close!
-  transport.close()
+    # Close!
+    transport.close()
 
-except Thrift.TException as tx:
-  print(('%s' % (tx.message)))
+if __name__ == '__main__':
+    try:
+        main()
+    except Thrift.TException as tx:
+        print(('%s' % (tx.message)))
diff --git a/tutorial/py/PythonServer.py b/tutorial/py/PythonServer.py
index 8ef231b..a02a525 100755
--- a/tutorial/py/PythonServer.py
+++ b/tutorial/py/PythonServer.py
@@ -19,12 +19,13 @@
 # under the License.
 #
 
-import sys, glob
+import glob
+import sys
 sys.path.append('gen-py')
 sys.path.insert(0, glob.glob('../../lib/py/build/lib*')[0])
 
 from tutorial import Calculator
-from tutorial.ttypes import *
+from tutorial.ttypes import InvalidOperation, Operation
 
 from shared.ttypes import SharedStruct
 
@@ -33,65 +34,67 @@
 from thrift.protocol import TBinaryProtocol
 from thrift.server import TServer
 
+
 class CalculatorHandler:
-  def __init__(self):
-    self.log = {}
+    def __init__(self):
+        self.log = {}
 
-  def ping(self):
-    print('ping()')
+    def ping(self):
+        print('ping()')
 
-  def add(self, n1, n2):
-    print('add(%d,%d)' % (n1, n2))
-    return n1+n2
+    def add(self, n1, n2):
+        print('add(%d,%d)' % (n1, n2))
+        return n1 + n2
 
-  def calculate(self, logid, work):
-    print('calculate(%d, %r)' % (logid, work))
+    def calculate(self, logid, work):
+        print('calculate(%d, %r)' % (logid, work))
 
-    if work.op == Operation.ADD:
-      val = work.num1 + work.num2
-    elif work.op == Operation.SUBTRACT:
-      val = work.num1 - work.num2
-    elif work.op == Operation.MULTIPLY:
-      val = work.num1 * work.num2
-    elif work.op == Operation.DIVIDE:
-      if work.num2 == 0:
-        x = InvalidOperation()
-        x.whatOp = work.op
-        x.why = 'Cannot divide by 0'
-        raise x
-      val = work.num1 / work.num2
-    else:
-      x = InvalidOperation()
-      x.whatOp = work.op
-      x.why = 'Invalid operation'
-      raise x
+        if work.op == Operation.ADD:
+            val = work.num1 + work.num2
+        elif work.op == Operation.SUBTRACT:
+            val = work.num1 - work.num2
+        elif work.op == Operation.MULTIPLY:
+            val = work.num1 * work.num2
+        elif work.op == Operation.DIVIDE:
+            if work.num2 == 0:
+                x = InvalidOperation()
+                x.whatOp = work.op
+                x.why = 'Cannot divide by 0'
+                raise x
+            val = work.num1 / work.num2
+        else:
+            x = InvalidOperation()
+            x.whatOp = work.op
+            x.why = 'Invalid operation'
+            raise x
 
-    log = SharedStruct()
-    log.key = logid
-    log.value = '%d' % (val)
-    self.log[logid] = log
+        log = SharedStruct()
+        log.key = logid
+        log.value = '%d' % (val)
+        self.log[logid] = log
 
-    return val
+        return val
 
-  def getStruct(self, key):
-    print('getStruct(%d)' % (key))
-    return self.log[key]
+    def getStruct(self, key):
+        print('getStruct(%d)' % (key))
+        return self.log[key]
 
-  def zip(self):
-    print('zip()')
+    def zip(self):
+        print('zip()')
 
-handler = CalculatorHandler()
-processor = Calculator.Processor(handler)
-transport = TSocket.TServerSocket(port=9090)
-tfactory = TTransport.TBufferedTransportFactory()
-pfactory = TBinaryProtocol.TBinaryProtocolFactory()
+if __name__ == '__main__':
+    handler = CalculatorHandler()
+    processor = Calculator.Processor(handler)
+    transport = TSocket.TServerSocket(port=9090)
+    tfactory = TTransport.TBufferedTransportFactory()
+    pfactory = TBinaryProtocol.TBinaryProtocolFactory()
 
-server = TServer.TSimpleServer(processor, transport, tfactory, pfactory)
+    server = TServer.TSimpleServer(processor, transport, tfactory, pfactory)
 
-# You could do one of these for a multithreaded server
-#server = TServer.TThreadedServer(processor, transport, tfactory, pfactory)
-#server = TServer.TThreadPoolServer(processor, transport, tfactory, pfactory)
+    # You could do one of these for a multithreaded server
+    # server = TServer.TThreadedServer(processor, transport, tfactory, pfactory)
+    # server = TServer.TThreadPoolServer(processor, transport, tfactory, pfactory)
 
-print('Starting the server...')
-server.serve()
-print('done.')
+    print('Starting the server...')
+    server.serve()
+    print('done.')