''' Created on May 16, 2016 @author: Brett Paufler Copyright Brett Paufler Scratch Pad for Closures and the Like ''' def logger(file_name='logfile.txt'): log_file = open(file_name, 'a') return log_file.write log = logger() log('first Line write\n') log('Second Line\n') class closure_simple(): def __init__(self, base_num=10): self.base_num = base_num def __call__(self, num): return self.base_num + num foo = closure_simple(3) print foo(10) foo.base_num = 6 print foo(10) class empty_closure(): def __init__(self, func): self.func = func def __call__(self, *args, **kwargs): self.func(*args, **kwargs) @empty_closure def single_adder(a, b): total = a + b print total return total print single_adder(1, 10) place = ['first', 'second', 'third', 'last'] def infinite_list(a_list): a_list.reverse() print a_list final = a_list[0] while a_list: yield a_list.pop() while True: yield final inf = infinite_list(place) for _ in range(6): print next(inf)