比方說,我有一個函數需要兩個參數:x
和y
。如果沒有給出y
,那麼我將根據x
創建一個默認值。當然,我不能用def myfunc(x, y=x+1)
來定義函數,因爲默認值將在函數的定義上進行評估,而不是在調用時進行評估。因此,我會用def myfunc(x, y=None)
來定義函數,並在我的函數體中檢查y
是否爲None
,如果是,則重新定義y
至x + 1
。如果y
可能是什麼?如果連None
都是可能的值呢?有沒有一種方法可以區分myfunc(4)
和myfunc(4, None)
,即使y
的默認值是None
?使用默認參數調用的Python函數不同於無參數
0
A
回答
2
如果你真的需要知道它沒有設置,這是這樣的:
NOT_SET = object()
def f(x, y=NOT_SET):
if y is NOT_SET:
# y is not set
這工作,因爲這樣:
>>> a = object()
>>> b = object()
>>> a is b
False
+1
如果使用'if y NOT_SET:'可能會更好,這會檢查對象身份而不是相等。 –
+0
@GeorgSchölly你是對的,我編輯了我的答案。 – Fredrik
相關問題
- 1. 使用默認參數的Python函數
- 2. 使用默認參數傳遞函數
- 3. python函數的默認參數
- 4. Python類構造函數默認參數
- 5. Boost.Fusion功能:使用默認參數調用函數
- 6. 如何讓PHP在函數調用中使用默認參數?
- 7. 從參數化構造函數調用默認構造函數
- 8. 函數調用作爲默認函數參數
- 9. 用不同參數調用函數C++
- 10. plot()函數默認參數
- 11. 函數參數的默認值等於另一個參數
- 12. Python使用默認參數* args
- 13. 使用self.xxxx作爲默認參數 - Python
- 14. python strptime()解析,默認使用參數
- 15. 也使用python函數arg作爲默認參數
- 16. ctypedef使用默認參數
- 17. C++ - 關於使用默認參數
- 18. 默認參數 - Python的
- 19. 調用參數多於參數的函數/仿函數
- 20. 使用不同數量的參數調用函數
- 21. 如何使用不同數量的默認參數來包裝函數以使其只有一個參數?
- 22. 使用參數調用基於哪個參數調用函數的Powershell
- 23. sapply()如何應用未定義(無默認)參數的函數
- 24. 關於使用默認參數值的python名稱的問題
- 25. 無參數構造函數調用2參數構造函數
- 26. 如何使用Hibernate訪問Oracle函數(使用默認參數)?
- 27. Python - 如何設置默認參數等於另一個參數
- 28. JS:函數的參數的默認值
- 29. 如何使用非默認參數的值作爲Python中默認參數的默認值?
- 30. 重新分配函數調用默認參數
您的功能沒法處理「任何東西」,所以設定默認的東西永遠不會被傳遞或者你知道你不會處理。 – Fredrik
@FredrikRosenqvist如果它是一種新的序列呢? – zondo
順序是什麼意思?舉個例子 – Fredrik