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

2024-09-29 23:24:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用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个参数,有人能帮我吗?你知道吗


Tags: 函数字符串参数软件定义parameterdefpeter
3条回答

甚至可以使用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

这是一个糟糕的代码气味。应该将参数包装在对象中。例如一本字典。你知道吗

像这样:

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

这样你就不需要函数了。你知道吗

好吧,RvdK的答案是可行的,但是如果你必须按照你在问题中指出的方式来写,那么你应该考虑使用exec()函数。这样,您就可以在脚本中编写一个小代码,将此函数作为字符串写入。然后,使用exec(),您可以实际使用生成的字符串作为代码的活动部分。你知道吗

不过,如果可能的话,我建议您使用列表或元组。你知道吗

相关问题 更多 >

    热门问题