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
 
     
    