Как мне получить доступ к переменной в одном скрипте python из другого скрипта

#python #import

#python #импорт

Вопрос:

bot2.py

 from flask import Flask, request
import requests
from twilio.twiml.messaging_response import MessagingResponse


app = Flask(__name__)


@app.route('/bot', methods=['POST'])
def bot():
    incoming_msg = request.values.get('Body', '').lower()
    resp = MessagingResponse()
    msg = resp.message()
    constparam = incoming_msg

    print(constparam)
    msg.body(constparam)

    return str(resp)


if __name__ == '__main__':
    app.run()
  

dummy.py

 from bot2 import app,bot
import time

while 1:

    print(bot.constparam)
    time.sleep(5)
  

Я хочу использовать переменную constparam из bot2.py в dummy.py

Комментарии:

1. Что вы ожидаете print(bot.constparam) вывести до bot() Flask того, как фреймворк был вызван?

Ответ №1:

Я не знаком с тем, как Flask предоставляет свои экземпляры, но обычно можно импортировать и получить доступ к любой переменной или объекту верхнего уровня. Однако, поскольку bot это функция, все ее переменные (включая constparam ) являются частными и доступны только внутри этой функции. Единственное, что вы можете сделать constparam , это создать вместо этого глобальную переменную, доступ к которой можно получить из любого модуля, который импортирует файл. Поскольку вы начнете с установки переменной, вам сначала нужно будет добавить a global constparam в bot функцию, прежде чем произойдет что-либо еще, связанное с constparam этим.

Комментарии:

1. я только что создал constparam как глобальный, но все равно не могу получить к нему доступ.

2. По умолчанию присвоение переменным в функции все равно создаст локальную версию. Убедитесь, что вы добавили global constparam строку, чтобы объявить, что вы хотите использовать глобальную переменную, а не создавать локальную. Я забыл прямо упомянуть об этом, но вам также придется добавить constparam в свой список импорта и получить к нему доступ как к глобальной переменной вместо свойства.