Python 从模块访问变量

Python 从模块访问变量,python,flask,Python,Flask,我要做一个DIY机器人。为了找出机器人的方位,我正在使用我的智能手机和应用程序。该应用程序基于Flask服务器。下面给出了获取方向的代码,我将其命名为orientation.py: from flask import Flask from flask_sockets import Sockets app = Flask(__name__) sockets = Sockets(app) @sockets.route('/orientation') def echo_socket(ws):

我要做一个DIY机器人。为了找出机器人的方位,我正在使用我的智能手机和应用程序。该应用程序基于Flask服务器。下面给出了获取方向的代码,我将其命名为
orientation.py

from flask import Flask 
from flask_sockets import Sockets

app = Flask(__name__)
sockets = Sockets(app)

@sockets.route('/orientation')
def echo_socket(ws):
    while True:
        message = ws.receive()
        raw2 = message.split(',')
        global orient1
        orient1 = float(raw2[0])
        orient2 = float(raw2[1])
        orient3 = float(raw2[2])
        print('x = ', orient1, "is", type(orient1))
        # print('y = ', orient2, "is", type(orient2))
        # print('z = ', orient3, "is", type(orient3))
        ws.send(message)


@app.route('/') 
def hello():
    return 'Hello World!'

if __name__ == "__main__":
    from gevent import pywsgi
    from geventwebsocket.handler import WebSocketHandler
    server = pywsgi.WSGIServer(('0.0.0.0', 5000), app, handler_class=WebSocketHandler)
    server.serve_forever()
我必须从另一个名为
robot controller.py
的脚本访问变量orient1。我尝试通过以下几种方式访问变量:

from orientation import *
import orientation
from orientation import orient1

如何从同一文件夹中的其他脚本访问orient1?

变量
orient1
位于函数内部,因此您无法从函数外部的任何位置访问它

您可以做的是在函数外部设置一个常规变量,以便通过getter函数获取它,例如:

from flask import Flask 
from flask_sockets import Sockets

app = Flask(__name__)
sockets = Sockets(app)
orient1 = 0.0

def get_orient1():
    return orient1

@sockets.route('/orientation')
def echo_socket(ws):
    while True:
        message = ws.receive()
        raw2 = message.split(',')
        global orient1
        orient1 = float(raw2[0])
        orient2 = float(raw2[1])
        orient3 = float(raw2[2])
        print('x = ', orient1, "is", type(orient1))
        # print('y = ', orient2, "is", type(orient2))
        # print('z = ', orient3, "is", type(orient3))
        ws.send(message)


@app.route('/') 
def hello():
    return 'Hello World!'

if __name__ == "__main__":
    from gevent import pywsgi
    from geventwebsocket.handler import WebSocketHandler
    server = pywsgi.WSGIServer(('0.0.0.0', 5000), app, handler_class=WebSocketHandler)
    server.serve_forever()
现在,您可以通过以下方式访问它:

from orientation import get_orient1
orient1 = get_orient1()

orient1
是在函数
echo\u socket
中定义的,因此只能在此函数中访问。一个选项是将其定义为全局变量(然后导入将起作用)。但是,大多数时候不使用全局变量,您可以通过更改程序体系结构来避免它们。