编程中什么是「Context(上下文)」?
最近读Flask的文档,读到很多关于Context(上下文)的术语,如应用上下文,请求上下文等,查阅资料但没有得到理解?有没有比较好的解释?
回复内容:
每一段程序都有很多外部变量。只有像Add这种简单的函数才是没有外部变量的。一旦你的一段程序有了外部变量,这段程序就不完整,不能独立运行。你为了使他们运行,就要给所有的外部变量一个一个写一些值进去。这些值的集合就叫上下文。
譬如说在C++的lambda表达是里面,[写在这里的就是上下文](int a, int b){ ... }。
context是environment的snapshot. 你查不到是因为上下文这个东西不是一个具体的东西,上下文在不同的地方表示不同的含义,要感性理解。context其实说白了,和文章的上下文是一个意思,在通俗一点,我觉得叫环境更好。
....
林冲大叫一声“啊也!”
....
问:这句话林冲的“啊也”表达了林冲怎样的心里?
答:啊你妈个头啊!
看,一篇文章,给你摘录一段,没前没后,你读不懂,因为有语境,就是语言环境存在,一段话说了什么,要通过上下文(文章的上下文)来推断。
子程序之于程序,进程之于操作系统,甚至app的一屏之于app,都是一个道理。
程序执行了部分到达子程序,子程序要获得结果,要用到程序之前的一些结果(包括但不限于外部变量值,外部对象等等);
app点击一个按钮进入一个新的界面,也要保存你是在哪个屏幕跳过来的等等信息,以便你点击返回的时候能正确跳回,如果不存肯定就无法正确跳回了。
看这些都是上下文的典型例子,理解成环境就可以,(而且上下文虽然叫上下文,但是程序里面一般都只有上文而已,只是叫的好听叫上下文。。进程中断在操作系统中是有上有下的,不过不给题主说了,免得产生新的问题) 和其他传入对象参数没什么区别。
但是通常使用Context来描述有几个特点:
- 被传入Context的部分(组件),内部需要频繁的获取Context的data和调用function。对context有很强的依赖,实现建立在context的基础上。
- Context会被较为多数部分(组件)所需要,在软件实现部分Context会在某个scene下出现单一实例化,然后被多个部分(组件)实例对象调用。出现局部全局化。
- Context会持有很多状态data。
- Coder习惯,命名选择困难下的胶合产物。
另外 Context的中文翻译是谁想出来的,站出来我保证不打你。 其他语言不知道。
在 Scheme 中完整的表述应该是 e 在 E 中的上下文,其中 E 是一个表达式,e是该表达式的子表达式。
如 (+ 1 2 3) 中有子表达式 2 ,那么 2 在 (+ 1 2 3) 中就有一个上下文。
在 Scheme 中上下文是一个过程(即函数)。
构造这个函数很简单,第一步把子表达式挖掉,用空洞(hole) 占住位置。
(+ 1 ~ 3),~ 表示空洞。
第二步,将上一步的结果用 lambda 包裹起来,得到函数。
(lambda (~) (+ 1 ~ 3))。即为 2 在 (+ 1 2 3) 中的上下文。
同理 (+ 2 3) 在 (/ (+ 2 3) 4) 中的上下文即是函数 (lambda (~) (/ ~ 4))。
上下文有一个性质,用原来的子表达式调用上下文时得到原来的表达式。
((lambda (~) (+ 1 ~ 3)) 2) ;;=> (+ 1 2 3)
((lambda (~) (/ ~ 4)) (+ 2 3)) ;; => (/ (+ 2 3) 4)
因为上下文有这个性质,可以很方便的用上下文来解释 不动点(y 组合子) 和 延续等概念。 在语言学里,语意学(semantics)不包含语境(context),语用学(pragmatics)则考虑到语境对语意的影响。
在编程中,也就是一些编程构件(如函数)需要考虑到当时的编译/运行环境,才能理解它的语意/运行结果。 理解了stateless的概念就不会有疑惑了。 基于会话,每个处理模块的通信需要一个会话识别标识和内容容器内交换,那个就是上下文。 一般来说是想要有个object来保存状态,想不出好的名字然后就叫context了 简单的说就是一个状态,当与其它模块进行交互,其它模块执行完了通知你的时候,通过context你就可以知道在交互之前你的模块是一个什么样的状态,然后你可以按照这个状态做相应的处理。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











React와 Flask를 사용하여 간단하고 사용하기 쉬운 웹 애플리케이션을 구축하는 방법 소개: 인터넷의 발전과 함께 웹 애플리케이션의 요구 사항은 점점 더 다양해지고 복잡해지고 있습니다. 사용 편의성과 성능에 대한 사용자 요구 사항을 충족하기 위해 최신 기술 스택을 사용하여 네트워크 애플리케이션을 구축하는 것이 점점 더 중요해지고 있습니다. React와 Flask는 프런트엔드 및 백엔드 개발을 위한 매우 인기 있는 프레임워크이며, 함께 잘 작동하여 간단하고 사용하기 쉬운 웹 애플리케이션을 구축합니다. 이 글에서는 React와 Flask를 활용하는 방법을 자세히 설명합니다.

Flask를 설치하는 방법과 개인 블로그를 빠르게 구축하는 방법을 처음부터 차근차근 가르쳐드리겠습니다. 글쓰기를 좋아하는 사람으로서 개인 블로그를 갖는 것은 매우 중요합니다. 경량 Python 웹 프레임워크인 Flask를 사용하면 간단하고 완전한 기능을 갖춘 개인 블로그를 빠르게 구축할 수 있습니다. 이 기사에서는 처음부터 시작하여 Flask를 설치하고 개인 블로그를 빠르게 구축하는 방법을 단계별로 가르쳐 드리겠습니다. 1단계: Python 및 pip 설치 시작하기 전에 먼저 Python 및 pi를 설치해야 합니다.

Flask 프레임워크 설치 튜토리얼: Flask 프레임워크를 올바르게 설치하는 방법을 단계별로 설명합니다. 특정 코드 예제가 필요합니다. 소개: Flask는 간단하고 유연한 Python 웹 개발 프레임워크입니다. 배우기 쉽고 사용하기 쉬우며 강력한 기능이 가득합니다. 이 문서에서는 Flask 프레임워크를 올바르게 설치하는 방법을 단계별로 안내하고 참조할 수 있는 자세한 코드 예제를 제공합니다. 1단계: Python 설치 Flask 프레임워크를 설치하기 전에 먼저 Python이 컴퓨터에 설치되어 있는지 확인해야 합니다. P부터 시작할 수 있습니다.

Django와 Flask는 모두 Python 웹 프레임워크의 리더이며 둘 다 고유한 장점과 적용 가능한 시나리오를 가지고 있습니다. 이 기사에서는 이 두 프레임워크를 비교 분석하고 구체적인 코드 예제를 제공합니다. 개발 소개 Django는 모든 기능을 갖춘 웹 프레임워크이며, 주요 목적은 복잡한 웹 애플리케이션을 신속하게 개발하는 것입니다. Django는 ORM(Object Relational Mapping), 양식, 인증, 관리 백엔드 등과 같은 다양한 내장 기능을 제공합니다. 이러한 기능을 통해 Django는 대규모 처리를 수행할 수 있습니다.

FlaskvsFastAPI: 효율적인 WebAPI 개발을 위한 최선의 선택 소개: 현대 소프트웨어 개발에서 WebAPI는 없어서는 안 될 부분이 되었습니다. 이는 서로 다른 애플리케이션 간의 통신과 상호 운용성을 가능하게 하는 데이터와 서비스를 제공합니다. WebAPI 개발을 위한 프레임워크를 선택할 때 많은 관심을 받은 두 가지 선택은 Flask와 FastAPI입니다. 두 프레임워크 모두 매우 인기가 높으며 각각 고유한 장점이 있습니다. 이번 글에서는 Fl에 대해 알아보겠습니다.

컨텍스트는 프로그램이 실행될 때의 환경 및 상태 정보로, 변수의 값, 함수의 호출 스택, 프로그램의 실행 위치 등 다양한 정보를 포함할 수 있으며 이를 통해 프로그램이 대응할 수 있습니다. 다양한 상황에 따라 결정을 내리고 해당 작업을 수행합니다.

소개 서블릿은 오랫동안 Java 기반 웹 개발의 초석이었습니다. 그러나 웹 기술이 발전하면서 다양한 개발 요구에 적합한 다양한 기능과 패러다임을 제공하는 서블릿에 대한 여러 대안이 등장했습니다. 이 기사에서는 이러한 대안에 대한 개요를 제공하고 다양한 상황에서의 장점과 적합성을 논의합니다. 서블릿 이해 서블릿은 웹 서버에서 실행되고 웹 브라우저나 다른 클라이언트의 요청과 서버 응답 사이의 중개자 역할을 하는 Java 프로그램입니다. . 서블릿은 웹 애플리케이션 구축을 위한 강력한 기술이지만 대규모 애플리케이션에서 사용하면 복잡해질 수 있습니다. 이러한 복잡성을 해결할 수 있는 몇 가지 인기 있는 대안을 살펴보겠습니다.

Django의 템플릿 엔진과 Flask의 Jinja2에 대한 심층적인 이해에는 특정 코드 예제가 필요합니다. 소개: Django와 Flask는 Python에서 일반적으로 사용되고 널리 사용되는 두 가지 웹 프레임워크입니다. 둘 다 동적 웹 페이지의 렌더링을 처리하는 강력한 템플릿 엔진을 제공합니다. Django는 자체 템플릿 엔진을 사용하고 Flask는 Jinja2를 사용합니다. 이 기사에서는 Django의 템플릿 엔진과 Flask의 Jinja2를 심층적으로 살펴보고 사용법을 설명하는 몇 가지 구체적인 코드 예제를 제공합니다.
