当'无'时,如何接受函数中的默认参数?或者没有传递任何论据?

时间:2016-04-29 07:32:12

标签: python function default-parameters

我正在编写一个带有泛型函数的新python类。有一点我的要求如下

def function(a=1):
    ....
    ....
    print a # here I want a to be 1 if None or nothing is passed

例如:

  • a(无)应打印1
  • a()应该打印1
  • a(2)应该打印2

有办法做到这一点吗?

6 个答案:

答案 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 ... )。