鉴于Python函数:
def a_method(arg1, arg2):
pass
Run Code Online (Sandbox Code Playgroud)
如何提取参数的数量和名称.即,鉴于我有一个func的引用,我想要返回func.[something]("arg1","arg2").
这种情况的使用场景是我有一个装饰器,我希望使用方法参数的顺序与它们为实际函数出现的顺序相同.也就是说,当我调用aMethod("a","b")时,装饰器看起来会打印出"a,b"吗?
为什么这段代码会抛出一个SyntaxError?
>>> def fun1(a="who is you", b="True", x, y):
... print a,b,x,y
...
File "<stdin>", line 1
SyntaxError: non-default argument follows default argument
Run Code Online (Sandbox Code Playgroud)
虽然下面的代码运行没有可见的错误:
>>> def fun1(x, y, a="who is you", b="True"):
... print a,b,x,y
...
Run Code Online (Sandbox Code Playgroud) 有没有一种方法来反思了一项功能,它显示我的需要(如参数的个数数量,类型,如果可能的,如果命名的参数名称)和返回值参数的信息?dir()似乎没有做我想要的.该__doc__字符串有时包括方法/函数的参数,但往往并非如此.
def thefunction(a=1,b=2,c=3):
pass
print allkeywordsof(thefunction) #allkeywordsof doesnt exist
Run Code Online (Sandbox Code Playgroud)
会给[a,b,c]
是否有像allkeywordsof这样的功能?
我不能改变里面的任何东西, thefunction
为了保持几个模块,我在Python中构建有点一致,我想做一些自动代码检查.为此,我想检查模块的功能和函数所采用的参数.我可以使用hasattr()来检查模块是否实际包含预期的函数.到现在为止还挺好.
我现在想看看函数采用哪些参数.只需查看变量名就足够了.我不知道我怎么能这样做.有人知道如何获取函数所带参数的名称吗?