我目前正在学习编程,但我遇到了以下问题。
用户应该从命令行输入他想要进行的操作,并根据操作输入有关该项目的信息。
我尝试过以下内容:
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
并且,第二个对我不起作用,因为,当我想使用此代码删除(a,b)时,我不需要三个参数。我想说的是根据我的操作改变参数的次数。我该如何处理。
答案 0 :(得分: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")
等
答案 1 :(得分: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
>>>