我想将用户输入字符串传递给函数,使用空格分隔的单词作为参数。但是,造成这个问题的原因是我不知道用户会给出多少参数。
答案 0 :(得分:3)
def your_function(*args):
# 'args' is now a list that contains all of the arguments
...do stuff...
input_args = user_string.split()
your_function(*input_args) # Convert a list into the arguments to a function
http://docs.python.org/tutorial/controlflow.html#arbitrary-argument-lists
当然,如果您是设计该函数的人,您可以将其设计为接受列表作为单个参数,而不是需要单独的参数。
答案 1 :(得分:1)
简单的方法,使用str.split和参数解包:
f(*the_input.split(' '))
但是,这不会执行任何转换(所有参数仍然是字符串)并且拆分有一些警告(例如'1,,2'.split(',') == ['1', '', '2']
;请参阅文档)。
答案 2 :(得分:1)
有两种选择。您可以使该函数获取参数列表:
def fn(arg_list):
#process
fn(["Here", "are", "some", "args"]) #note that this is being passed as a single list parameter
或者您可以在任意参数列表中收集参数:
def fn(*arg_tuple):
#process
fn("Here", "are", "some", "args") #this is being passed as four separate string parameters
在这两种情况下,arg_list
和arg_tuple
几乎相同,唯一的区别是一个是列表而另一个是元组:["Here, "are", "some", "args"]
或("Here", "are", "some", "args")
。