From 910249657a0e6bf5146f90e097f985dfea5b5406 Mon Sep 17 00:00:00 2001 From: Aleksey Zubakov Date: Tue, 29 Nov 2022 16:32:43 +0300 Subject: [PATCH] Add problem for seventh seminar --- 07_python/README.md | 21 +++++++++++++++++++++ 07_python/deco_troubles.py | 17 +++++++++++++++++ 07_python/ex.py | 8 ++++++++ 3 files changed, 46 insertions(+) create mode 100644 07_python/README.md create mode 100644 07_python/deco_troubles.py create mode 100644 07_python/ex.py diff --git a/07_python/README.md b/07_python/README.md new file mode 100644 index 0000000..f75b3ce --- /dev/null +++ b/07_python/README.md @@ -0,0 +1,21 @@ +### Задаание 1 + +Используя библиотеку `time`, написать декоратор `@bench(n)`, +который меняет функцию так, чтобы при каждом её вызове она +вычислялась не один раз, а `n` раз, при этом необходимо выводить: + +- имя функции; +- аргументы; +- средняя время работы за `n` запусков; + +```python + +@bench(50) +def foo(a: int, b: int): + ... + + +>>> foo(5, 5) +<... foo> (5, 5) {} +Mean execution time on calls: ???ns +``` diff --git a/07_python/deco_troubles.py b/07_python/deco_troubles.py new file mode 100644 index 0000000..34f63a1 --- /dev/null +++ b/07_python/deco_troubles.py @@ -0,0 +1,17 @@ +def deco(f): + def inner(*args, **kwargs): + print(f) + return f(*args, **kwargs) + + return inner + + +# @deco +def foo(): + """ + Foo is just a function. + """ + return None + + +foo = deco(foo) diff --git a/07_python/ex.py b/07_python/ex.py new file mode 100644 index 0000000..07980a3 --- /dev/null +++ b/07_python/ex.py @@ -0,0 +1,8 @@ +def deco_ch(f): + f.jjjjj = 10 + return f + + +@deco_ch +def foo(): + print(foo.jjjjj)