(一)闭包和 lamda 表达式
- 一切变量的保存都需要占用内存。当一个内存空间不再可能被内存访问时,就会被 Python 虚拟机回收,将重新分配给其他变量。
- 不能被访问:
- 变量被 del 语句删除
- 一般情况下函数中定义的变量在函数运行时被分配给内存空间,在函数运行结束后不再可能被访问
- 对象不再被任何变量引用时,它不可能被访问
- 关于函数运行分配内存的说明
- 每个函数运行时都要分配给它一定的内存空间
- 同一个函数多次执行,不一定每次都分配了同样的内存 空间
- 如果函数执行过一次后,其内存空间没有完全被回收。则再次运行时分配的内存应当避开这些没有被回收的空间,另外开辟一块
- 在并发(或并行)执行多个函数时,无论他们是否是同一个函数名,无论他们是否来自于同一段代码定义,每个函数都分配有独立的一块内存空间
- 闭包机制
- 对于“闭包”可以从三个方面理解
- 语法上:闭包是指利用函数定义嵌套,外层函数限制内层函数定义的自由变量
- 实现上:闭包是通过利用函数可以作为返回值(或函数的参数)的特性以及内存管理机制,保持对一个已经执行完毕的函数的变量进行访问。(由于访问被保持,所以这些变量的内存并不会被回收)
- 意义上:闭包函数所“包”的变量能且仅能被这个函数访问,这样就保持了数据的纯净,防止数据被污染(被其他代码访问或修改)
- 简单来说:设有一对有嵌套关系的函数定义。内层函数中有可以访问外层函数变量的代码。通过保持对内存函数的访问已经执行完的外层函数的变量不被删除
(二)浏览器传来的 Query
浏览器客户端传来 Query 的方法可以有两种,一种是用 GET 方法,另外一种是用 POST 方法
GET
- 请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:
- GET 请求可被缓存
- GET 请求保留在浏览器历史记录中
- GET 请求可被收藏为书签
- GET 请求不应在处理敏感数据时使用
- GET 请求有长度限制
- GET 请求只应当用于取回数据
-
/test/demo_form.asp?name1=value1&name2=value2
POST
-
- POST 请求不会被缓存
- POST 请求不会保留在浏览器历史记录中
- POST 不能被收藏为书签
- POST 请求对数据长度没有要求
-
POST /test/demo_form.asp HTTP/1.1 Host: w3schools.com name1=value1&name2=value2
原文地址:https://www.cnblogs.com/owenqing/p/10321494.html
时间: 2024-10-22 19:20:36