如何在Python中找到另一个函数中特定函数参数的默认值?
假设我们有一个这样的函数:
def myFunction(arg1='a default value'):
pass
我们可以通过内省来使用 myFunction.func_code.co_varnames
找出 myFunction()
所采用的参数名称,但是如何找出 arg1
的默认值(即上例中的'a default value'
)?
Let's suppose we have a function like this:
def myFunction(arg1='a default value'):
pass
We can use introspection to find out the names of the arguments that myFunction()
takes using myFunction.func_code.co_varnames
, but how to find out the default value of arg1
(which is 'a default value'
in the above example)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
作为根源于函数属性的替代方案,您可以使用检查模块来获得稍微友好的界面:
对于 Python 3.x 解释器:
然后,spec 是一个
FullArgSpec
对象,具有诸如之类的属性>args
和defaults
:其中一些属性在 Python 2 上不可用,因此如果您必须使用旧版本
inspect.getargspec(myFunction)
将给出您可以在没有 Python 3 功能的情况下获得类似的值(getargspec
也适用于 Python 3,但自 Python 3.0 以来已被弃用,因此不要使用它):那么 spec 是一个
ArgSpec
具有args
和defaults
等属性的对象:As an alternative to rooting around in the attributes of the function you can use the inspect module for a slightly friendlier interface:
For Python 3.x interpreters:
Then spec is a
FullArgSpec
object with attributes such asargs
anddefaults
:Some of these attributes are not available on Python 2 so if you have to use an old version
inspect.getargspec(myFunction)
will give you a similar value without the Python 3 features (getargspec
also works on Python 3 but has been deprecated since Python 3.0 so don't use it):Then spec is an
ArgSpec
object with attributes such asargs
anddefaults
:如果你像这样定义一个函数
f
:在Python 2中,你可以使用:
而在Python 3中,它是:
If you define a function
f
like this:in Python 2, you can use:
whereas in Python 3, it's:
inspect.signature
还提供了一种迭代函数参数的好方法 https://docs.python.org/3/library/inspect.html#inspect.signatureThe
inspect.signature
also provides a nice way to iterate parameters of a function https://docs.python.org/3/library/inspect.html#inspect.signature我的不好。当然,还有
myFunction.func_defaults
。My bad. Of course, there's
myFunction.func_defaults
.