cdef extern from "stdio.h": int puts(char *s) cdef extern from "cfuncs.h": void some_c_function() import os cdef int c_var = 12 python_var = 13 def spam(a=0): cdef: int b, c b = c = d = 0 b = 1 c = 2 int(10) puts("spam") os.path.join("foo", "bar") some_c_function() cpdef eggs(): pass cdef ham(): pass cdef class SomeClass(object): def spam(self): pass def outer(): cdef object a = "an object" def inner(): b = 2 # access closed over variables print(a, b) return inner outer()() spam() print("bye!") def use_ham(): ham()