@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")
  • Вопрос задан
  • 921 просмотр
Решения вопроса 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 проверок это всё отказалось работать, уже грешил что в табуляции проблема, но ошибка на табуляции не выходила

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

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

Похожие вопросы