Python 后端第二弹

(一)闭包和 lamda 表达式

  1. 一切变量的保存都需要占用内存。当一个内存空间不再可能被内存访问时,就会被 Python 虚拟机回收,将重新分配给其他变量。
  2. 不能被访问:
    • 变量被 del 语句删除
    • 一般情况下函数中定义的变量在函数运行时被分配给内存空间,在函数运行结束后不再可能被访问
    • 对象不再被任何变量引用时,它不可能被访问
  3. 关于函数运行分配内存的说明
    • 每个函数运行时都要分配给它一定的内存空间
    • 同一个函数多次执行,不一定每次都分配了同样的内存 空间
    • 如果函数执行过一次后,其内存空间没有完全被回收。则再次运行时分配的内存应当避开这些没有被回收的空间,另外开辟一块
    • 在并发(或并行)执行多个函数时,无论他们是否是同一个函数名,无论他们是否来自于同一段代码定义,每个函数都分配有独立的一块内存空间
  4.  闭包机制
    • 对于“闭包”可以从三个方面理解
      • 语法上:闭包是指利用函数定义嵌套,外层函数限制内层函数定义的自由变量
      • 实现上:闭包是通过利用函数可以作为返回值(或函数的参数)的特性以及内存管理机制,保持对一个已经执行完毕的函数的变量进行访问。(由于访问被保持,所以这些变量的内存并不会被回收)
      • 意义上:闭包函数所“包”的变量能且仅能被这个函数访问,这样就保持了数据的纯净,防止数据被污染(被其他代码访问或修改)
    • 简单来说:设有一对有嵌套关系的函数定义。内层函数中有可以访问外层函数变量的代码。通过保持对内存函数的访问已经执行完的外层函数的变量不被删除

(二)浏览器传来的 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

猜你喜欢

转载自www.cnblogs.com/owenqing/p/10321494.html