Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 10, 2017 15:39:44

Guljaca
От:
Зарегистрирован: 2011-07-11
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

Как передать именные аргументы в фунцию, вызвав ее из другой фунции?

Как реализовать конструкцию ниже?
Нужно через get_time_work передать функцию с какими-то значениями (свои для каждой фунции; пример test), чтобы она выполнилась внутри этой функции, отобразив время ее работы.

 import time
def get_time_work(func):
  start = time.time()
  func()
  end   = time.time()
  dif   = end - start
  print("Time_work = ", dif)
def test(num, text):
  print(num, text)
get_time_work(test)



Офлайн

#2 Ноя. 10, 2017 15:44:35

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2832
Репутация: +  186  -
Профиль   Отправить e-mail  

Как передать именные аргументы в фунцию, вызвав ее из другой фунции?

Читай про декораторы.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Ноя. 10, 2017 16:09:10

Guljaca
От:
Зарегистрирован: 2011-07-11
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

Как передать именные аргументы в фунцию, вызвав ее из другой фунции?

Спасибо. Вот результат.

 import time
def get_time(fn):
    def wrapped(*args, **kwargs):
      start = time.time()
      fn(*args, **kwargs)
      end   = time.time()
      dif   = end - start
      print("Time_work = ", dif)
    return wrapped
 
@get_time
def test(num, text, test="test"):
  print(num, text, test)
 
print (test(10,"text", test="result")) 



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version