Flask - использование выходов из функции внутри другой функции - PullRequest
0 голосов
/ 10 апреля 2020

Если я определяю две функции:

def atesting():
    a = 2
    return a

def btesting():
    b = a+ 3
    return b

Но в Flask я получаю «Внутреннюю ошибку сервера» при выполнении следующего, если «а» еще не определено. Хотя, если я определяю «а» вне приложения ie скажем, а = 2, то это работает, и я получаю 5.

app = Flask(__name__)

@app.route('/')
def index():
    results = {}

    a = atesting()

    results = btesting()

    return render_template('index.html', results=results)
if __name__ == '__main__':
    app.run()

Индекс. html:

<html>

      <h1>{{ results }}</h1>

</html>

Но обычно в Python я получаю 5, когда я запускаю это:

a = atesting()
btesting()

Почему Flask не использует a = atesting () в качестве ввода при вычислении btesting ()?

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Как вы написали, btesting не видит a. Вам нужно понять scope . Попробуйте это для своих функций - обратите внимание, что мы сообщаем btesting значение a, передавая его в качестве аргумента:

def atesting():
    a = 2
    return a

def btesting(a):
    b = a+ 3
    return b

Затем вызываем его так (передайте значение функции)

app = Flask(__name__)

@app.route('/')
def index():
    results = {}

    a = atesting()

    results = btesting(a)

    return render_template('index.html', results=results)
if __name__ == '__main__':
    app.run()
1 голос
/ 10 апреля 2020

Ошибка flask верна.

Для этого варианта использования не существует глобального a . (Он устанавливается внутри функции index , поэтому другие функции его не видят)

Это отличается, если вы определяете глобально в обычной программе.

Если вы хотите, чтобы функция btesting видела переменную, передайте ее в качестве параметра.

app = Flask(__name__)

@app.route('/')
def index():
    results = {}

    a = atesting()

    results = btesting(a)

    return render_template('index.html', results=results)

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

и

def btesting(a):
    b = a + 3
    return b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...