@Innaro

Перестала работать команда Def в Python, как решить проблему?

есть такой код, недавно он работал, и почему то перестал работать def
без def всё работает, а без него я не могу, так как нужна эта функция в другом коде

from docxtpl import DocxTemplate


doc = DocxTemplate("Eidos.docx")
brand = input("Введите марку Автомобиля: ")
number = input("Введите номера Автомобиля: ")
arrivaldate = input("Какого числа должен заехать Автомобиль: ")

def eidos():
    context = {'Brand' : brand, 'Number' : number, 'ArrivalDate' : arrivaldate}
    doc.render(context)
    doc.save("ЗАЯВКА НА ВЪЕЗД НА склад.docx")
  • Вопрос задан
  • 732 просмотра
Решения вопроса 1
iggor-markin
@iggor-markin
Python Developer
Не работает - потому что создаёте функцию, а потом не вызываете её. Когда удаляете def, функция исчезает и просто выполняется код. После функции сделайте вот так:
eidos()
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
def создаёт именованную функцию, которую потом можно вызывать по имени. Её тело не будет выполнено, пока функция не будет вызвана фактически. В твоём случае вызов будет происходить так: eidos()
Однако следует заметить, что твоя функция опирается при работе на значения в глобальных переменных brand, number, arrivaldate. Если их не изменять между вызовами, eidos() всегда будет давать один и тот же результат.
Собственно, если приведённый код - это весь скрипт, то функция тебе вообще без надобности, можно оставить всё одним скриптом.
А вот если есть ещё что-то, что ты не показываешь, то ситуация может измениться.
Ответ написан
Комментировать
@Innaro Автор вопроса
import PassEidos
import SendEidos

PassEidos.brand = input("Введите марку Автомобиля: ")
PassEidos.number = input("Введите номера Автомобиля: ")
PassEidos.arrivaldate = str(input ("Какого числа должен заехать Автомобиль: "))

PassEidos.eidos()
print("Документ создан ")
SendEidos.send()
print("Документ отправлен")


у меня есть этот код
и вся проблема была в том что это всё работало без () при вызове функции, и сегодня с утра после 2 проверок это всё отказалось работать, уже грешил что в табуляции проблема, но ошибка на табуляции не выходила

а переменный ввода, они были включены для проверки, после правильной работы из второго кода, их убрал
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы