LINUX.ORG.RU

Передать функции несколько параметров как один

 


1

1

Допустим, что моя функция принимает параметры в формате str. Я хочу сделать что-нибудь типа my_function("|'.txt'), т.е. обработать как my_function("), так и my_function('.txt'). Возможно ли это, или придется специально переписывать функцию, чтобы она принимала массив?

Deleted

Arbitrary Argument Lists

используй лучше это.

dimon555 ★★★★★
()
Ответ на: комментарий от anon1984

Я написал функцию return_by_pattern(path,pattern1,pattern2,DatePar,AbsPath), которая фильтрует содержимое каталога path согласно pattern1 (начало названий файлов), pattern2 (конец названий файлов), DatePar - фильтровать по определенной дате, AbsPath - возвращать абсолютный путь. Функция возвращает отфильтрованный список файлов. Так вот, вместо pattern2 я хочу одновременно использовать как ", так и '.txt'.

Deleted
()
Ответ на: комментарий от Deleted

тогда без модификации функции никак. делай внутри split(«|») для аргументов-паттернов, и обрабатывай их как списки.
если результат не важен, подошел бы list comprehension - однострочник вроде [func(x) for x in ('a','b','c')], или мап (как выше написали).

anon1984
()
Последнее исправление: anon1984 (всего исправлений: 1)
def func(*args):
	for i in args:
		print i

func(1,2,3,4)

Не?

qq6ka
()
Ответ на: комментарий от Deleted
import operator
operator.concat(return_by_pattern(path, head_pattern, tail_pattern, date_par, abs_path) for tail_pattern in ['.txt', '.py']) 

И всех делов-то. Еще можно sorted добавить.

Virtuos86 ★★★★★
()
Последнее исправление: Virtuos86 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.