我正在用通用函數編寫一個新的python類。在一個點我沒有要求如下當'None'或沒有參數傳遞時,如何接受函數中的默認參數?
def function(a=1):
....
....
print a # here I want a to be 1 if None or nothing is passed
例如:
- 一個(無)應該打印1
- 一個()應打印1
- 一個(2)應該打印2
有沒有辦法做到這一點?
我正在用通用函數編寫一個新的python類。在一個點我沒有要求如下當'None'或沒有參數傳遞時,如何接受函數中的默認參數?
def function(a=1):
....
....
print a # here I want a to be 1 if None or nothing is passed
例如:
有沒有辦法做到這一點?
您可以使用默認參數定義函數,稍後您可以檢查傳遞的值並將其打印出來。
def fun(a=1):
a = 1 if a is None else a
print(a)
希望它有幫助。
>>> def function(a=1):
... print(a if a else 1)
...
>>> function(None)
1
>>> function(2)
2
>>> function(1)
1
>>> function(123)
123
>>> function(0)
1
def function(a=1):
if a is None:
a = 1
應該使用無作爲默認參數。
def function(a=None):
if a == None:
a = 1
print a
否則在多次調用函數時會遇到問題。
「多次調用函數」是什麼意思?什麼樣的問題? –
我想這個問題主要出現在可變數據類型中。這裏有一個很好的解釋它的鏈接:[link](http://docs.python-guide.org/en/latest/writing/gotchas/) – coralvanda
def function(a=1):
print(1 if a is None else a)
function()
function(None)
function(2)
function(0)
輸出:
1
1
2
0
指定的默認值將是僅用於如果調用函數時,在所有你不及格的價值。如果您將其指定爲a=1
,那麼使用零參數調用它確實將使用1
作爲默認值,但使用None
調用它將只將None
設置爲a
。
當我想給None
和案件「根本沒有指定」相同的含義,我這樣做:
def function(a=None):
if a is None:
a = 1
...
這樣,只要你想它會工作。此外,與像
def function(a=1):
if a is None:
a = 1
...
您指定的「默認」值(1
)只有一次的其他解決方案。
'function(0)=? ' –
@AndreySobolev好點。 – 2016-04-29 07:36:45