Arhn - архитектура программирования

Почему моя функция Python не выполняется?

Я совсем новичок в кодировании. Я написал простой фрагмент кода, который принимает URL-адрес в качестве входных данных, загружает URL-адрес и помещает код состояния для этого URL-адреса в переменную. Я поместил это в функцию. Но когда я запускаю код, я не получаю ошибок, но функция не запускается. Кажется, что переводчик просто пролетает мимо моей функции. Я знаю, что у меня есть какая-то простая ошибка, но сколько бы я ни искал, я не могу ее исправить. Пожалуйста, помогите мне понять. О, и код неполный. Но функция должна работать.

import urllib.request, click, threading

url = input("Enter domain name >> \n")

def get_stat():
    status = urllib.request.urlopen("http://"+url).getcode()
    if status == 200:
        return "Site loads normally!\nHost Said: '%s'!" %(str(status))
    else:
        return "Site Needs To Be Checked!\nHost Said: '%s'!" %(str(status))
get_stat()

if click.confirm("Would you like to set a uptime watch?"):
    click.echo("You just confirmed something!!")
    count = input("Enter the number of times you wish your site to be checked: ")
    interval = input("Enter the time interval for status requests (Time is in minutes): ")
03.02.2018

  • Вы выполняете функцию, но ничего не делаете с возвращаемым ею значением. Может быть, вы имели в виду print(get_stat())? 03.02.2018
  • Как вы определили, что ваша функция не работает? Я только что попробовал ваш код, и функция определенно была выполнена. Какой точный метод вы использовали, чтобы определить, что функция не запустилась? 03.02.2018
  • Да. Я вижу это сейчас. Спасибо, парни. Я действительно не мог понять это. Впервые работаю с функциями! 03.02.2018

Ответы:


1

Ваша функция наверняка работает. Проблема, с которой вы столкнулись, заключается в том, что вы возвращаете значение из get_stat() (это то, что делает оператор return), но на самом деле вы никогда не говорите, что это значение должно быть напечатано.

Я предполагаю, что вы хотите напечатать возвращаемые значения, и в этом случае вам нужно добавить оператор печати:

print(get_stat())

Или вы можете сохранить значение как переменную:

a = get_stat()
print(a)

Как сказано в комментарии quamrana ниже, хотя следующий метод считается плохой практикой, вы можете поместить оператор print() в свою функцию для целей отладки. и заменить его позже:

if status == 200:
    print("Site loads normally!\nHost Said: '%s'!" %(str(status)))
else:
    print("Site Needs To Be Checked!\nHost Said: '%s'!" %(str(status)))

Это докажет, что функция действительно выполняется.

Этот пост может помочь вам немного лучше понять что делает оператор return и как вы можете получить из него значения.

03.02.2018
  • Любое из приведенных выше предложений подходит для отладки и показывает, что функция действительно работает. Обратите внимание, что выполнение print() внутри функции обычно является плохой идеей, и их следует удалить после выявления проблемы. 03.02.2018
  • @quamrana Я этого не знал. Спасибо, что поправили меня. Пожалуйста, смотрите мой отредактированный пост. 03.02.2018
  • Большое спасибо Саймон. Это очень полезный ответ, и он решил мою проблему. 03.02.2018
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..