Since Python functions, even trivial ones that just print to stdout, are more than just wrappers around C. functions
In the simplest case, think of introspection tools in Python. The Python function is a fully functional object that you can request:
>>> def hello(): ... print 'hello' ... >>> dir(hello) ['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']
You could, of course, imagine an extension tool that simply wrapped C functions. Check out SWIG , which allows you to expand entries for a large number of scripting languages, including Python. Since it will be used for the lowest common denominator, it will allow you to wrap a function like your hello_world , but of course you will lose a lot of energy too.