python中函数的可选参数

时间:2013-12-29 16:04:41

标签: python

我正在尝试编写切片代码,获取链接列表,启动,停止,步骤。 我的代码应该与使用list[start:step:stop]的行为相同。

当用户只插入1个参数时(我们说它是 x ),我的问题就开始了 - 然后, x 应该进入stop而不是start。但是,我被告知可选 参数需要出现在所有参数的末尾。

有人能告诉我如何在第一个参数中只插入1个输入到第二个参数 一个是强制性的,但第二个不是? 顺便说一句,我不能使用内置函数

4 个答案:

答案 0 :(得分:3)

您可以编写一个LinkedList类来定义 __ getitem __ 函数,以访问python的表示法。

class LinkedList:

    # Implement the Linked ...

    def __getitem__(self, slice):

        start = slice.start
        stop = slice.stop
        step = slice.step

        # Implement the function

然后你可以像你想要的那样使用LinkedList

l = LinkedList()
l[1]
l[1:10]
l[1:10:2]

答案 1 :(得分:1)

你可以尝试:

def myF(*args):
    number_args = len(args)
    if number_args == 1:
        stop = ...
    elif number_args == 2:
        ...
    elif number_args == 3:
        ...
    else
        print "Error"

*args表示传递给函数myF的参数将存储在变量args中。

答案 2 :(得分:1)

使用可选(命名)参数:

def foo(start, stop=None, step=1):
    if stop == None:
        start, stop = 0, start
    #rest of the code goes here

然后是foo(5) == foo(0,5,1),但foo(1,5) == foo(1,5,1)。无论如何,我觉得这很有用...... :)

答案 3 :(得分:0)

def func(arg1=None, arg2=None, arg3=None):
    if not arg1:
        print 'arg1 is mandatory'
        return False
    ## do your stuff here

arg1 = 1
arg2 = 4
arg3 = 1

## works fine
func(arg1=arg1, arg2=arg2, arg3=arg3)

## Evaluated as False, Since the first argument is missing
func(arg2=arg2, arg3=arg3)