回答
他们有s在test.func_defaults
+1:这个!有用。 – 2012-01-10 16:22:27
里卡多卡德尼斯是在正确的轨道上。其实 内部test
会变得更加棘手。该inspect
模块将进一步得到你,但它会是丑陋:Python code to get current function into a variable?
事实证明,你可以参考test
里面的函数:
def test(arg1='foo'):
print test.__defaults__[0]
会打印出foo
。但指的test
只会工作,只要test
实际上定义:
>>> test()
foo
>>> other = test
>>> other()
foo
>>> del test
>>> other()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in test
NameError: global name 'test' is not defined
所以,如果你打算在周围路过这个功能,你可能真的要离开了inspect
路线:(
我也有这种印象,事实证明,'测试'是在'测试'的本地范围内,正如里卡多对我的答案的评论中指出的那样。 – 2012-01-10 16:29:07
很高兴知道!更新了我的答案以反映这一点! – 2012-01-10 16:35:33
如果我们做'def test2():打印locals(),'\ n \ n',globals()',我们可以看到'test2'是全局变量,并且本地没有任何东西。 – 2016-08-10 04:28:39
这是不是很优雅(的话),但你想要做什么:
def test(arg1='Foo'):
print(test.__defaults__)
test(arg1='Bar')
与Python 3.x的太工程
为什么'globals()'? 'test'在本身的范围内,不需要这个。 – 2012-01-10 16:24:32
@RicardoCárdenes,你说得对。我不知道,谢谢。现在修复它。 – 2012-01-10 16:27:42
tored考虑:
def test(arg1='Foo'):
pass
In [48]: test.func_defaults
Out[48]: ('Foo',)
.func_defaults
为您提供了默认值,作为一个序列,以便参数出现在你的代码。
显然,func_defaults
可能已经在Python 3
我认为'func_defaults'只适用于Python 2.x. '__defaults__'似乎可以在Python 2.7和3.2上运行。 – 2012-01-10 16:25:54
@RobWouters:很高兴知道,尽管我从不使用python 3。 – Marcin 2012-01-10 16:27:21
- 1. 在python中选择默认参数值?
- 2. 在初始时Python访问默认参数
- 3. 如何使用非默认参数的值作为Python中默认参数的默认值?
- 4. 默认值参数
- 5. 是否可以在Python中使用默认参数值赋值的参数值?
- 6. 访问函数的默认值
- 7. 默认参数 - Python的
- 8. 关于使用默认参数值的python名称的问题
- 9. GQL db.Model默认参数值
- 10. C++默认参数值
- 11. OptionalAttribute参数的默认值?
- 12. 模板参数默认值
- 13. C++默认参数值
- 14. AdoNetAppender参数的默认值
- 15. 参数没有默认值
- 16. QInputDialog参数默认值
- 17. 默认值的参数
- 18. 问题与默认参数
- 19. VB6中函数参数的默认值
- 20. 如何默认为默认参数在Python
- 21. 如何通过非默认参数与默认参数在Python Django表单
- 22. 的static_cast在默认参数值
- 23. C中的默认参数值
- 24. Scala中类型参数的默认值
- 25. Python类构造函数默认参数
- 26. 使用默认参数的Python函数
- 27. python函数的默认参数
- 28. 访问默认值给#Size!错误
- 29. 默认参数
- 30. 默认参数
删除您能否提供一个例子证明你为什么会想这样做? – Kevin 2012-01-10 16:17:23
你的意思是不只是输入'arg1'? – 2012-01-10 16:18:53
如果你在调用'test'时不提供'arg1',那么'arg1'将默认为''Foo'' – TyrantWave 2012-01-10 16:21:37