Skip to content

Instantly share code, notes, and snippets.

@IvanaGyro
Created June 23, 2020 07:35
Show Gist options
  • Save IvanaGyro/bd2cc8ec54177e0afe88aa057893039e to your computer and use it in GitHub Desktop.
Save IvanaGyro/bd2cc8ec54177e0afe88aa057893039e to your computer and use it in GitHub Desktop.
Demo `getargspec` and `getfullargspec`
from inspect import getargspec, getfullargspec
def kwargs_only(a, b, c=3, d=4, **kwargs):
pass
def default_args(a, b, c=3, d=4, *args, **kwargs):
pass
def default_kwargs(a, b, *args, c=3, d=4, **kwargs):
pass
print(getfullargspec(kwargs_only))
# FullArgSpec(args=['a', 'b', 'c', 'd'], varargs=None, varkw='kwargs', defaults=(3, 4), kwonlyargs=[], kwonlydefaults=None, annotations={})
print(getfullargspec(default_args))
# FullArgSpec(args=['a', 'b', 'c', 'd'], varargs='args', varkw='kwargs', defaults=(3, 4), kwonlyargs=[], kwonlydefaults=None, annotations={})
print(getfullargspec(default_kwargs))
# FullArgSpec(args=['a', 'b'], varargs='args', varkw='kwargs', defaults=None, kwonlyargs=['c', 'd'], kwonlydefaults={'c': 3, 'd': 4}, annotations={})
print(getargspec(kwargs_only))
# ArgSpec(args=['a', 'b', 'c', 'd'], varargs=None, keywords='kwargs', defaults=(3, 4))
print(getargspec(default_args))
# ArgSpec(args=['a', 'b', 'c', 'd'], varargs='args', keywords='kwargs', defaults=(3, 4))
print(getargspec(default_kwargs))
# ValueError: Function has keyword-only parameters or annotations, use getfullargspec() API which can support them
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment