如何定义具有100个参数的函数

时间:2015-01-29 10:47:29

标签: python arguments

我正在尝试在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个参数,任何人都可以帮助我吗?

3 个答案:

答案 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(),您实际上可以将结果字符串用作代码的活动部分。

尽管如此,我建议您使用列表或元组。