回答
他們有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