Руководство по Python Bottle (Перевод) Часть 2 - Hello World
В предыдущей части мы рассмотрели установку Bottle: 
Руководство по Python Bottle (Перевод) Часть 1 — Установка 
В этой части мы пойдем дальше и рассмотрим простой пример приложения сайта «Hello World». 
2. Простой пример («Hello World!»)
Здесь предполагается что у вас уже установлен Bottle, либо библиотека скопирована в папку проекта. 
Начнем с очень простого примера «Hello World!»:
from bottle import route, run
@route('/hello')
def hello():
    return "Hello World!"
run(host='localhost', port=8080, debug=True)
Вот и всё. 
Запускаем скрипт, заходим в браузере по адресу localhost:8080/hello и видим в нашем браузере на странице надпись “Hello World!”. 
Разберем, как это работает: 
Декоратор route() связывает URL-адрес с фрагментом кода. В нашем случае, мы связываем путь /hello с функцией hello(). Это называется маршрутом (route()) и является самой важной для понимания частью этой структуры. Вы можете задавать столько маршрутов, сколько пожелаете. Каждый раз когда Веб-браузер запросит определенный URL-адрес, будет вызвана связанная с этим адресом функция и возвращаемое этой функцией значение будет возвращено обратно Веб-браузеру. 
Всё проще — простого! 
Метод run() вызываемый в конце программы, запускает встроенный WEB-сервер. Он стартует с адресом Localhost (127.0.0.1) на порту 8080 и обслуживает входящие запросы, до тех пор пока вы не нажмете сочетание клавиш «Control-C». В дальнейшем сервер можно будет поменять, но для разработки нам будет вполне достаточно встроенного сервера, он не требует установки и невероятно прост в использовании — то что надо для тестирования и отладки приложения. 
Так же в нашем первом приложении включен режим отладки «debug=True», этот режим очень полезен при разработке и отладке но его необходимо выключать при публикации приложения (сайта). Это надо запомнить. 
Пока это просто демонстрация базовых принципов того как устроено приложение с использованием Bottle. 
!!! ВАЖНО!!!
Для простоты, в большинстве примеров в этом руководстве для определения маршрутов используется декоратор route() на уровне модуля. Таким образом маршруты добавляются к глобальному «приложению по молчанию», экземпляру Bottle, который автоматически создается при первом вызове route(). Если вы предпочитаете более объектно-ориентированный подход, то можно создать отдельный объект приложения и использовать его вместо глобального: 
from bottle import Bottle, run
app = Bottle()
@app.route('/hello')
def hello():
    return "Hello World!"
run(app, host='localhost', port=8080)
Объектно-ориентированный подход будет описан далее. Просто имейте в виду, что у вас есть выбор. 
Продолжение:  Руководство по Python Bottle (Перевод) Часть 3 - Маршрутизация запросов