В чем отличие вызова функции с скобками и без?

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?