Передача нескольких значений в вызов функции (Python)

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

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

Спасибо

Теги:
function

6 ответов

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

  • 0
    Есть хороший (и очень быстрый) учебник, показывающий, как использовать не только *, но и ** (словари) для передачи аргументов, здесь: technovelty.org/code/python/asterisk.html
2

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

for value in values:
    strip_tags(value)
1

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

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
1
import re
def strip_tags(values):
  return map(lambda i: re.sub(r'<[^>]*?>', '', i), values)
0

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню