views.py中全局变量的作用域是什么?

What is the scope of global variables in the views.py?

如果我在 views.py

中声明一个全局变量 myglobalvar
myglobalvar = "value"

def home(request):
    print(myglobalvar)

def thatOneLink(request):
    myglobalvar = "different value"

当有人打电话时 thatOneLink 变化的范围是什么?请问myglobalvar = "different value"只针对这个请求吗?还是只针对会话?或者直到服务器重新启动?

在 JSP 中,默认情况下有范围设置。 Django 似乎有另一个包:https://pypi.org/project/django-scopes/ 但是在没有任何附加包的非常默认的情况下,Django 如何处理作用域?或者它们有不同的名称或定义?

Python 作为一种语言,有作用域和全局变量的概念。与 Django 无关,这里同样适用。看这个例子

x = 10

def first():
    x = 20
    print(x)

def second():
    global x
    print(x)
    x = 30
    print(x)

def third():
    print(x)


first()
second()
third()

输出

20
10
30
30

first 函数中,x 被重新声明为一个新值并且对外部值没有影响。函数 second 打印 x 只是为了验证这一点,然后使用 global 关键字使 x 成为全局变量。现在,x 在外部范围内重新初始化,函数 third 确认。

特别是对于您的场景,myglobalvar 只会针对该特定请求进行更改,外部范围值将保持不变。但是,如果您使用 global 关键字。

global myglobalvar
myglobalvar = "different value"

thatOneLink 中,myglobalvar 的值将针对该进程服务的所有请求(甚至是该进程中的所有线程)更改,直到您重新启动该进程。