将多个值传递给函数调用(Python)

时间:2010-01-17 17:35:49

标签: python function

import re
def strip_tags(value):
    "Return the given HTML with all tags stripped."
    return re.sub(r'<[^>]*?>', '', value)

我有这个功能来剥离HTML标签,但它似乎只接受单个值,如果我想一次传递多个(不是固定的)值,我需要更改什么?

由于

6 个答案:

答案 0 :(得分:8)

Python提供了一种使用任意长度参数列表的方法:

def myfunc(*args):
    for argument in args:
        print "myfunc was given", argument

如果将*args放在函数定义中,则传递给函数的所有值都可以作为名为args的元组使用。请注意,您还可以在*args之前添加其他参数, 像

def my_other_func(name, *args):

所以第一个参数将以name形式提供,其余参数将位于元组args中。

调用此参数args是常规,但不是必需的。只要前面有一个星号,你可以随意调用它。

答案 1 :(得分:2)

你能使用一个循环。

for value in values:
    strip_tags(value)

答案 2 :(得分:1)

您可以将value作为字符串数组传入,然后返回已清理值的数组。

答案 3 :(得分:1)

import re
def strip_tags(values):
  return map(lambda i: re.sub(r'<[^>]*?>', '', i), values)

答案 4 :(得分:1)

如果值彼此独立,则不要修改strip_tags,只需更改调用方式:

values = [some_value, another_value]
values = [strip_tags(v) for v in values]
# values[0] is now the strip_tags version of the old values[0]
# similar to values[0] = strip_tags(values[0]), except for every item

如果值是相关的,例如是相同文件的相邻部分,则在使用strip_tags之前连接它们:

values = [some_value, another_value]
result = strip_tags("".join(values))
# note result is single string

答案 5 :(得分:0)

这是一个用你提供的函数编写的函数。这将获取值列表并返回相应的已处理列表:

import re
def strip_tags_list(values):
     return map(strip_tags, values)

注意:这适用于python 2.6和earleir版本。在python 3.0上,你必须使用list()显式地将map()的结果转换为list。