В чем отличие вызова функции с скобками и без?
1. С скобками ()
()
Когда вы пишете
func()
, функция выполняется сразу.Возвращается результат выполнения функции.
def greet():
print("Hello!")
return 42
result = greet() # функция вызывается
print(result) # 42
Вывод:
Hello!
42
2. Без скобок
Когда вы пишете
func
, вы не вызываете функцию, а получаете сам объект функции.Можно присвоить переменной, передать как аргумент, хранить в списке.
def greet():
print("Hello!")
f = greet # ссылка на функцию
f() # вызов функции через переменную
Вывод:
Hello!
Это удобно для декораторов, callback-функций, хранения функций в структурах данных.
funcs = [greet, lambda: print("Hi")]
for f in funcs:
f() # вызов каждой функции
3. Важные моменты
Синтаксис
Что происходит
Пример использования
func()
Функция вызывается, возвращает результат
Вызов функции в тесте, обработка результата API
func
Получаем объект функции
Передача в декоратор, callback, список функций
💡 Пример в автотестах:
def check_login():
return True
# Ссылка на функцию для pytest fixture
test_funcs = [check_login] # без скобок
for func in test_funcs:
assert func() # вызов функции с скобками
Last updated
Was this helpful?