Sri*_*nth 8 python introspection default-parameters
我们假设我们有这样的函数:
def myFunction(arg1='a default value'):
pass
Run Code Online (Sandbox Code Playgroud)
我们可以用自省,找出该参数的名称myFunction()需要使用myFunction.func_code.co_varnames,但如何找出的默认值arg1(这是'a default value'在上面的例子)?
Dun*_*can 10
作为在函数属性中生根的替代方法,您可以使用inspect模块获得更友好的界面:
对于Python 3.x解释器:
import inspect
spec = inspect.getfullargspec(myFunction)
Run Code Online (Sandbox Code Playgroud)
然后规范是一个FullArgSpec与属性,如对象args和defaults:
FullArgSpec(args=['arg1'], varargs=None, varkw=None, defaults=('a default value',), kwonlyargs=[], kwonlydefaults=None, annotations={})
Run Code Online (Sandbox Code Playgroud)
其中一些属性在Python 2上不可用,因此如果必须使用旧版本,inspect.getargspec(myFunction)则会在没有Python 3功能的情况下为您提供类似的值(getargspec也适用于Python 3,但自Python 3.0以来已弃用,因此不要使用它) :
import inspect
spec = inspect.getargspec(myFunction)
Run Code Online (Sandbox Code Playgroud)
然后规范是一个ArgSpec与属性,如对象args和defaults:
ArgSpec(args=['arg1'], varargs=None, keywords=None, defaults=('a default value',))
Run Code Online (Sandbox Code Playgroud)
如果你定义这样的函数f:
>>> def f(a=1, b=True, c="foo"):
... pass
...
Run Code Online (Sandbox Code Playgroud)
在Python 2中,您可以使用:
>>> f.func_defaults
(1, True, 'foo')
>>> help(f)
Help on function f in module __main__:
f(a=1, b=True, c='foo')
Run Code Online (Sandbox Code Playgroud)
而在Python 3中,它是:
>>> f.__defaults__
(1, True, 'foo')
>>> help(f)
Help on function f in module __main__:
f(a=1, b=True, c='foo')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1211 次 |
| 最近记录: |