Welcome, guest | Sign In | My Account | Store | Cart
import types

def freeVar(val):
  def nested():
    return val
  return nested.__closure__[0]

def nested(outer, innerName, **freeVars):
  if isinstance(outer, (types.FunctionType, types.MethodType)):
    outer = outer.func_code
  for const in outer.co_consts:
    if isinstance(const, types.CodeType) and const.co_name == innerName:
      return types.FunctionType(const, globals(), None, None, tuple(
          freeVar(freeVars[name]) for name in const.co_freevars))

Diff to Previous Revision

--- revision 1 2016-11-10 10:13:59
+++ revision 2 2016-11-10 10:15:52
@@ -1,14 +1,14 @@
-    import types
-    
-    def freeVar(val):
-      def nested():
-        return val
-      return nested.__closure__[0]
-    
-    def nested(outer, innerName, **freeVars):
-      if isinstance(outer, (types.FunctionType, types.MethodType)):
-        outer = outer.func_code
-      for const in outer.co_consts:
-        if isinstance(const, types.CodeType) and const.co_name == innerName:
-          return types.FunctionType(const, globals(), None, None, tuple(
-              freeVar(freeVars[name]) for name in const.co_freevars))
+import types
+
+def freeVar(val):
+  def nested():
+    return val
+  return nested.__closure__[0]
+
+def nested(outer, innerName, **freeVars):
+  if isinstance(outer, (types.FunctionType, types.MethodType)):
+    outer = outer.func_code
+  for const in outer.co_consts:
+    if isinstance(const, types.CodeType) and const.co_name == innerName:
+      return types.FunctionType(const, globals(), None, None, tuple(
+          freeVar(freeVars[name]) for name in const.co_freevars))

History