gpt4 book ai didi

python - 为什么Python使用全局变量而不是方法参数?

转载 作者:行者123 更新时间:2023-12-01 07:03:19 25 4
gpt4 key购买 nike

我来自 Java 世界,我对 Python 中的变量作用域感到很困惑:

from flask import Flask, request

@app.route('/', methods=['POST'])
def handle():
form = request.form

在我使用的 HTTP 服务器中,我习惯于像 request 这样的变量。作为方法参数传递或从 ThreadLocal 检索。为什么 Flask/Python 在这种情况下使用全局变量?它是线程安全的吗?

最佳答案

Flask 使用了一些技巧,以便每个线程看到不同的请求对象。他们称之为“上下文”,它的工作方式与线程局部变量类似。

请参阅documentation :

The context is unique to each thread (or other worker type). request cannot be passed to another thread, the other thread will have a different context stack and will not know about the request the parent thread was pointing to.

这是 Flask 做出的一项设计决策,旨在使编写变得简单。其他框架可能会使用其他方法,例如显式地将 Request 对象传递给函数。

关于python - 为什么Python使用全局变量而不是方法参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58545827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com