Python
Как запустить функцию в Python: вызов, аргументы и типичные ошибки новичков
Чтобы запустить функцию в Python, нужно вызвать ее: написать имя функции и круглые скобки.
Ниже — разделы про самый простой пример, почему функция не запускается сама и как запустить функцию с аргументом, чтобы быстро понять устройство материала, практические ограничения и типовые точки отказа.
Чтобы запустить функцию в Python, нужно вызвать ее: написать имя функции и круглые скобки
def say_hello():
print("Привет")
say_hello()
Если написать только def, функция будет создана, но код внутри нее не выполнится. Python выполняет тело функции только тогда, когда вы ее вызываете
Самый простой пример
def greet():
print("Здравствуйте")
print("До вызова")
greet()
print("После вызова")
Вывод
До вызова
Здравствуйте
После вызова
Строка greet() — это и есть запуск функции
Почему функция не запускается сама
Когда Python видит def, он запоминает функцию под именем, но не выполняет ее тело
def greet():
print("Привет")
Этот код только создал функцию. Чтобы она сработала, нужно добавить вызов
greet()
Это удобно: функцию можно определить один раз, а запускать сколько угодно раз
greet()
greet()
greet()
Как запустить функцию с аргументом
Если функция принимает параметр, значение передают внутрь скобок
def greet(name):
print(f"Привет, {name}")
greet("Динар")
Вывод
Привет, Динар
name — параметр функции
"Динар" — аргумент, который мы передали при вызове
Как запустить функцию с несколькими аргументами
def add(a, b):
print(a + b)
add(10, 15)
Вывод
25
Количество аргументов должно совпадать с параметрами, если у параметров нет значений по умолчанию
Ошибка
def add(a, b):
print(a + b)
add(10)
Python скажет, что не хватает аргумента b
Как вернуть результат из функции
Если функция должна не просто печатать, а отдавать значение, используйте return
def add(a, b):
return a + b
result = add(10, 15)
print(result)
Вывод
25
return возвращает значение туда, где функция была вызвана
Это лучше, чем всегда печатать внутри функции, потому что результат можно использовать дальше
total = add(10, 15)
print(total * 2)
Как вызвать функцию после input()
def greet(name):
return f"Привет, {name}"
user_name = input("Как вас зовут? ")
message = greet(user_name)
print(message)
Здесь input() получает имя, потом это имя передается в функцию greet()
Как запустить функцию из другого файла
Структура проекта
project/
helpers.py
main.py
Файл helpers.py
def greet(name):
return f"Привет, {name}"
Файл main.py
from helpers import greet
print(greet("Динар"))
Запуск
python main.py
Важно: запускайте main.py, а не helpers.py, если главный сценарий находится в main.py
Что значит if __name__ == «__main__»
В учебных проектах часто пишут так
def main():
print("Программа запущена")
if __name__ == "__main__":
main()
Смысл: функция main() запустится только тогда, когда файл запустили напрямую
Это удобно, если файл можно и запускать как программу, и импортировать из других файлов
Для новичка пока достаточно запомнить: вызов main() внутри этого блока запускает основную функцию программы
Частые ошибки
Забыл круглые скобки
def greet():
print("Привет")
greet
Так функция не запустится. Вы просто сослались на объект функции
Нужно
greet()
Вызвал функцию до объявления
greet()
def greet():
print("Привет")
Python выполняет файл сверху вниз. На момент greet() функция еще не создана
Правильно
def greet():
print("Привет")
greet()
Функция возвращает None
Если в функции нет return, она возвращает None
def add(a, b):
print(a + b)
result = add(2, 3)
print(result)
Вывод
5
None
Если нужен результат, пишите return
def add(a, b):
return a + b
Перепутал print и return
print() показывает значение в консоли
return возвращает значение из функции
Для расчетов чаще нужен return, для вывода пользователю — print()
Мини-задача
Напишите функцию, которая принимает цену и скидку, а возвращает итоговую цену
def apply_discount(price, discount_percent):
discount = price * discount_percent / 100
return price - discount
final_price = apply_discount(1000, 15)
print(final_price)
Ожидаемый вывод
850.0
Потом попробуйте получить данные через input()
def apply_discount(price, discount_percent):
discount = price * discount_percent / 100
return price - discount
price = float(input("Цена: "))
discount = float(input("Скидка в процентах: "))
print(apply_discount(price, discount))
Что почитать дальше по Python
Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:
- Python: с чего начать — путеводитель для новичков
- function_name в Python: как ввести имя через input() и передать его в функцию
- Как закончить функцию в Python: отступ, return, pass и выход из программы
- Как запустить программу на Python: файл .py, терминал, CMD и VS Code