Передача нескольких значений в вызов функции (Python) - PullRequest
1 голос
/ 17 января 2010
import re
def strip_tags(value):
    "Return the given HTML with all tags stripped."
    return re.sub(r'<[^>]*?>', '', value)

У меня есть эта функция для удаления HTML-тегов, но она, кажется, принимает только одно значение, что мне нужно изменить, если я хочу передать несколько (не фиксированных) значений одновременно?

Спасибо

Ответы [ 6 ]

8 голосов
/ 17 января 2010

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. Пока перед ним стоит звездочка, вы можете называть ее как хотите.

2 голосов
/ 17 января 2010

Не могли бы вы использовать цикл.

for value in values:
    strip_tags(value)
1 голос
/ 17 января 2010

Если значения не зависят друг от друга, не изменяйте 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
1 голос
/ 17 января 2010
import re
def strip_tags(values):
  return map(lambda i: re.sub(r'<[^>]*?>', '', i), values)
1 голос
/ 17 января 2010

Вы можете передать value как массив строк, а затем вернуть массив очищенных значений.

0 голосов
/ 17 января 2010

здесь функция написана поверх предоставленной вами функции. это будет принимать список значений и возвращать соответствующий обработанный список:

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

примечание: это будет работать на Python 2.6 и более ранних версиях. на python 3.0 вам придется явно преобразовать результат map () в список, используя list ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...