#!/usr/bin/env python # -*- coding: utf-8 -*- """Show how values map to function arguments. """ import inspect import example import pprint for args, kwds in [ (('a', ), { 'unknown_name': 'value' }), (('a', ), { 'arg2': 'value' }), (('a', 'b', 'c', 'd'), {}), ((), { 'arg1': 'a' }), ]: print args, kwds callargs = inspect.getcallargs(example.module_level_function, *args, **kwds) pprint.pprint(callargs, width=74) example.module_level_function(**callargs) print
import inspect import example sig = inspect.signature(example.module_level_function) bound = sig.bind( 'this is arg1', 'this is arg2', 'this is an extra positional argument', extra_named_arg='value', ) print('Arguments:') for name, value in bound.arguments.items(): print('{} = {!r}'.format(name, value)) print('\nCalling:') print(example.module_level_function(*bound.args, **bound.kwargs))
#!/usr/bin/env python # -*- coding: utf-8 -*- """Show how values map to function arguments. """ import inspect import example import pprint for args, kwds in [ (('a',), {'unknown_name':'value'}), (('a',), {'arg2':'value'}), (('a', 'b', 'c', 'd'), {}), ((), {'arg1':'a'}), ]: print args, kwds callargs = inspect.getcallargs(example.module_level_function, *args, **kwds) pprint.pprint(callargs, width=74) example.module_level_function(**callargs) print
# inspect_signature_bind.py import inspect import example sig = inspect.signature(example.module_level_function) bound = sig.bind( 'questo è arg1', 'questo è arg2', 'questo è un argomento supplementare posizionale', extra_named_arg='value', ) print('Argomenti:') for name, value in bound.arguments.items(): print('{} = {!r}'.format(name, value)) print('\nChiamata:') print(example.module_level_function(*bound.args, **bound.kwargs))