上下文(context)应该怎么理解,有人说是环境,但总觉得有点模糊

2018-11-23 09:49:54 +08:00
 king1101
看 flask 的时候看到两个名词,一个程序上下文,一个请求上下文,都不是很理解。谢谢各位大佬解释一下
5515 次点击
所在节点    Python
35 条回复
azhangbing
2018-11-23 11:24:31 +08:00
android 里上线文分整个应用的 application 还有就是承载界面的 activity ,每个界面就是一个上线文,去绘制 view 网络请求 之类的
int64ago
2018-11-23 11:29:39 +08:00
状态和联系
vitoaaazzz
2018-11-23 11:30:58 +08:00
上下文说白了就是一个对象,并在对象上记录了相关联的状态。

拿请求来说,不同的请求对象(请求上下文)才能让代码区分出来现在的请求是哪个、请求参数有哪些,请求的状态是什么,应该如何处理该请求等待。

对应的线程上下文、进行上下文等等,说白了就是对象。

Context 或者说上下文的命名习惯应该是在早期,面向过程编程时期延续来的,那时没有很明确的对象概念,所以有了上下文的概念,从个人理解来说上下文和对象就是一个东西。
Mrkon
2018-11-23 11:58:13 +08:00
context 是 environment 的 snapshot.
源自知乎 https://www.zhihu.com/question/26387327

程序上下文(服务器 内部调用 运行的环境)
请求上下文( client-server 交互过程 运行的环境)
kxct
2018-11-23 12:01:13 +08:00
当前堆栈的信息
bobuick
2018-11-23 12:33:24 +08:00
用人类的语言来说,你就完全理解了。

计算机里上下文,最开始意思是这样: 妈妈在扫地,这时候外面有快递来了,她去开门拿好快递。回来继续扫地,上下文就是之前扫到哪了,是用啥在扫这些信息,如果不知道这些信息她就不知道从哪继续了。

请求上下文更像是跟本次请求相关的附加信息,这里用 context 这词其实是很牵强嘛,可是其他也没更好的名字了,就先这么用了。
dixeran
2018-11-23 12:52:11 +08:00
翻了一下 CSAPP:“操作系统保持跟踪进程运行所需的所有状态信息。这种状态,也就是上下文,包括许多信息,比如 PC 和寄存器文件的当前值,以及主存的内容”
不过上下文这个概念在不同具体框架下指的不是同一个对象
Mutoo
2018-11-23 12:54:33 +08:00
如果要理解“上下文”的话,得把它放到具体的语境中,你能提供一下上下文吗。(笑)
persimmon
2018-11-23 12:56:18 +08:00
everything that's related to what you're talking about right now
mf2019d
2018-11-23 13:10:06 +08:00
loveCoding
2018-11-23 15:15:40 +08:00
@araraloren #6 表达完美
jin5354
2018-11-23 15:26:33 +08:00
#6 的表达太唯心了,我们期望上下文中有『所有关联事物信息』,但实际上下文只包含『程序当前运行所需的状态信息』,不然写码时也不会出现由于作用域限制 xxx 拿不到数据的场景了
Reficul
2018-11-23 17:45:18 +08:00
世界的当前状态(雾

其实一般就是一个巨大的类型不定的 Map,然后运行这行代码的时候从里面扣出来一个不知道啥玩意,算完了再塞回去,从而造成谁也无法维护的编程技巧。
datou
2018-11-23 18:45:20 +08:00
@sutra 是 コンテックス 吧?
ivamp
2018-11-24 00:48:52 +08:00
你可以看一下七月的课程《 flask 高级编程》慕课网有,对上下文有深入讲解

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/510623

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX