0

我目前正在学习编程,我有以下问题。

用户应该从命令行输入他想做的操作,并根据操作输入有关项目的信息。

我尝试过以下方法:

def stock(f):
    d={}
    f()
    return d


def add(item,amount):
    d[item]=amount
    return d

或者

def stock(item,amount,f):
    d={}
    if f():
        d[item]=amount
    return d


def add():
    return True

而且,第二个对我不起作用,因为当我想使用此代码 remove(a,b) 时,我不需要三个参数。我想说的是根据我的操作更改参数的数量。我该如何处理。

4

2 回答 2

1

我不确定你在这里到底要做什么,但在 python 代码中常见的一个函数定义为:

def foo(*args):
    print(args)  #args is a tuple
    print(len(args))  #you can inspect it's length to see how foo should behave

然后你可以像这样调用这个函数:

foo(1)
foo(1,2)
foo(1,2,3)
foo(1,2,3,"spam")

等等

于 2012-12-14T13:44:09.327 回答
1

如果我理解正确,您需要字典工厂模式

>>> class Calc(object):
    def __init__(self):
            #Initialize a dictionary of keywords and callbacks
        self.operation = {
            'add':self.add,
            'sub':self.sub,
            'mul':self.mul,
            'div':self.div,
            'neg':self.neg

            }
    #Overload the function call
    def __call__(self, *args):
        return self.operation[args[0]](*args[1:])
    # *args - variable list argument list
    def add(self,*args):
        return sum(args)
    def sub(self,*args):
        return args[1] - args[0]
    def mul(self, *args):
        if len(args) == 0:
            return 1
        elif len(args) == 1:
            return args[0]
        else:
            return args[0] * args[1]
    def div(self, *args):
        return args[0] / args[1]
    def neg(self, *args):
        return -args[0]


>>> calc = Calc()
>>> calc('add',1,2,3)
6
>>> calc('mul',10)
10
>>> calc('mul',10,4)
40
>>> calc('neg',3)
-3
>>> 
于 2012-12-14T14:00:07.960 回答