我正在编写一个带有泛型函数的新python类。有一点我的要求如下
def function(a=1):
....
....
print a # here I want a to be 1 if None or nothing is passed
例如:
有办法做到这一点吗?
答案 0 :(得分:3)
您可以使用默认参数定义一个函数。稍后您可以检查传递的值并将其打印出来。
def fun(a=1):
a = 1 if a is None else a
print(a)
希望它有所帮助。
答案 1 :(得分:2)
def function(a=1):
if a is None:
a = 1
答案 2 :(得分:1)
应使用None作为默认参数。
#import "ActionBarButton.h"
@implementation ActionBarButton
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
[self setup];
}
return self;
}
- (void)setup
{
[self setAction:@selector(buttonTapped)];
}
- (void)setState:(ActionBarButtonState)state
{
_state = state;
switch (state) {
case ActionBarButtonStateEdit:
self.image = [UIImage imageNamed:@"TraderOverview_Edit"];
break;
case ActionBarButtonStateNone:
self.image = nil;
break;
case ActionBarButtonStateSave:
self.image = [UIImage imageNamed:@"Save_20x20"];
break;
case ActionBarButtonStateCategories:
self.image = [UIImage imageNamed:@"BackToCategories_20x20"];
break;
default:
break;
}
}
- (void)buttonTapped
{
switch (_state) {
case ActionBarButtonStateEdit:
[self.delegate actionButtonTappedEdit];
break;
case ActionBarButtonStateNone:
// do nothing
break;
case ActionBarButtonStateSave:
[self.delegate actionButtonTappedSave];
break;
case ActionBarButtonStateCategories:
[self.delegate actionButtonTappedCategories];
break;
default:
break;
}
}
@end
否则,多次调用该函数时会遇到问题。
答案 3 :(得分:0)
>>> 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
答案 4 :(得分:0)
def function(a=1):
print(1 if a is None else a)
function()
function(None)
function(2)
function(0)
输出:
1
1
2
0
答案 5 :(得分:0)
只有在完全调用函数时未传递值时,才会使用您指定的默认值。如果您将其指定为a=1
,则使用零参数调用它确实会使用1
作为默认值,但使用None
调用它只会将None
放到{{1} }}
当我想给a
和“未指定的”案例赋予相同的含义时,我这样做:
None
这样它可以按你的意愿工作。此外,与
等其他解决方案相比def function(a=None):
if a is None:
a = 1
...
只指定一次“默认”值(def function(a=1):
if a is None:
a = 1
...
)。