为函数提供多个参数

时间:2017-03-14 14:15:11

标签: python string function arguments

我想从字符串中给函数赋予多个参数 例如,如果我有一个功能

def myfunc(x, y, z):
       return x*y+z

如何从像'1,2,3'这样的字符串中给出参数, 我想要这样的东西

def myfunc(x, y, z):
       return x*y+z

string = '1, 2, 3'

myfunc(string)

4 个答案:

答案 0 :(得分:2)

'1, 2, 3'是一个int元组的字符串表示。处理它的一个简单方法是使用ast.literal_eval,它允许你“安全地评估表达式节点或包含......以下Python文字结构的字符串:字符串,字节,数字,元组,列表,字符串,集合,布尔值和None“:

import ast
s = '1, 2, 3'
tup_of_int = ast.literal_eval(s) # converts '1, 2, 3' to (1, 2, 3)
myfunc(*tup_of_int) # unpack items from tup_of_int to individual function args

代码可以写在一行上,如下所示:

myfunc(*ast.literal_eval(s))

有关myfunc(*tup_of_int)中星号的工作原理的详细信息,请参阅Unpacking Argument Lists中的The Python Tutorial

注意:不要试图用eval代替ast.literal_evalevalreally dangerous because it cannot safely handle untrusted input,因此您不应该习惯使用它。

答案 1 :(得分:1)

将最后一行替换为myfunc(*map(int, string.split(',')))

string.split(',')将字符串拆分为三个参数的列表。

map(int, string.split(','))将列表元素转换为整数。

myfunc(*map(int, string.split(','))) splats列表,以便列表中的三个元素作为参数传递。

此方法依赖于您的输入具有示例字符串中显示的确切格式('1,2,3'不起作用)。史蒂文的反应更加强烈,所以我建议选择那个。

答案 2 :(得分:0)

以下是您的问题的代码: 首先,您必须拆分字符串,然后继续下一步:

def myfunc(x, y, z):
   return x * y + z

a=raw_input()
x,y,z=map(int,a.split(","))
print myfunc(x,y,z)

答案 3 :(得分:-1)

一个班轮(虽然像这样解析字符串参数可能会在您的代码中引入漏洞)。

>>> myfunc(*eval(string))  # myfunc((1, 2, 3))
5