Is there a way to discover the potential keyword arguments for a function in python from the command line? without looking at the source or docs. Sometimes the source is to c lib even that isn't visible
Asked
Active
Viewed 5,053 times
10
-
4`help(whatever_function)`? – jonrsharpe Apr 22 '16 at 20:11
-
1By definition every possible key value pair is a potential keyword argument if you use kwargs – Natecat Apr 22 '16 at 20:11
2 Answers
5
You can use the inspect
module. In 3.3+, this is easy by using inspect.signature
import inspect
def foo(bar=None, baz=None):
pass
>>> print(inspect.signature(foo))
(bar=None, baz=None)
Immediately underneath the linked doc is an example that pulls out only the names of the keyword-only arguments, which may be worth reading too!
Of course if you're looking to deep inspect the source code to try and find anything that is pulled out of a **kwargs
argument, you're probably out of luck. Something like:
def foo(**kwargs):
if kwargs.get("isawesome"):
print("Dang you're awesome")
>>> some_magic(foo)
isawesome
is probably going to be hard to find.

Adam Smith
- 52,157
- 12
- 73
- 112
-
2Note also that this won't work for all builtin functions written in C, which don't usually have named arguments at all: E.g., try `inspect.signature(sum)` and you'll get an error. – alexis Apr 22 '16 at 20:35
-
A good point! I don't know if there's any way to inspect the signature of a function that's not written in Python. – Adam Smith Apr 22 '16 at 20:38