我正在尝试在Python中定义一个函数。它应该是这样的:
def myfunction(Peter_1, Amy_1, Peter_2, Amy_2, Peter_3, Amy_3,....Peter_50,Amy_50):
Peter_1 = 100
Amy_1 = 20
Peter_2 = 90
Amy_2 = 4
...
...
我正在使用Python编写的小软件来进行优化。软件就是这样,在我定义myfunction
之后,我应该写一下,
parameter1 = Parameter("Peter_1", (90,100),1)
parameter2 = Parameter("Amy_1", (15,25),1)
...
...
parameter99 = Parameter("Peter_50", (70,100),1)
parameter100 = Parameter("Amy_50", (15,25),1)
Parameter
是软件定义的函数,Parameter
的第一个参数应该是一个字符串,它必须是我在myfunction
中定义的名称。然后软件知道需要优化的第一个参数是Peter_1
。
我不想输入所有100个参数,任何人都可以帮助我吗?
答案 0 :(得分:1)
这是一个糟糕的代码味道。您应该将参数包装在对象中。例如一本字典。
这样的事情:
def myfunction(people):
for person_name in people.iterkeys():
people[person_name] = 100
my_people = {}
my_people['Peter'] = 0
my_people['Simon'] = 0
myfunction(my_people)
print my_people
但我真正关心的是你初始化函数中的值。为什么不预先?
my_people = {}
my_people['Peter'] = 100
my_people['Simon'] = 90
这样你就不需要这个功能了。
答案 1 :(得分:-1)
你甚至可以使用python * args语法。例如:
def foo(*args):
for i in args:
print(i)
foo(1,2)
foo(1,2,3,4,5,6,7,8)
#output:
1
2
#second run:
1
2
3
4
5
6
7
8
答案 2 :(得分:-1)
嗯,RvdK的回答是有效的,但是如果你必须按照你在问题中指出的方式写出来,那么你应该考虑使用exec()
函数。这样,您可以在脚本中编写一个小代码,将此函数作为字符串写入。然后使用exec()
,您实际上可以将结果字符串用作代码的活动部分。
尽管如此,我建议您使用列表或元组。