Программно передать неизвестное количество параметров в Python - PullRequest
2 голосов
/ 04 декабря 2009

Я бы хотел, чтобы простой способ подключить функцию и аргументы для выполнения позже, чтобы я мог иметь своего рода оболочку вокруг него.

В этом случае я бы хотел использовать его для тестирования, например:

def timefunc(fn, *args):
   start = time.clock()
   fn(args)
   stop = time.clock()
   return stop - start

Как передать аргументы, число параметров которых неизвестно? Как мне найти количество параметров? Как бы я даже вызвал функцию, если бы знал количество параметров?

Ответы [ 2 ]

7 голосов
/ 04 декабря 2009

Просто вызовите функцию так:

fn(*args)
1 голос
/ 04 декабря 2009

MatrixFrog ответ правильный, но только для того, чтобы завершить картину. Чтобы узнать количество аргументов, просто наберите len, потому что args - это кортеж:

import time

def timefunc(fn, *args):
   start = time.clock()
   print len(args), type(args)
   fn(*args)
   stop = time.clock()
   return stop - start


def myfoo(a, b):
    c = a + b
    return c


timefunc(myfoo, 5, 6)

Оператор печати внутри timefunc печатает:

2 <type 'tuple'>

Поскольку args - это кортеж, вы можете получить к нему доступ, как и к любому другому кортежу.

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