第四篇:白话tornado源码之褪去模板外衣的前戏

 

加班程序员最辛苦,来张图醒醒脑吧!

...

...

...

好了,醒醒吧,回归现实看代码了!!

执行字符串表示的函数,并为该函数提供全局变量

本篇的内容从题目中就可以看出来,就是为之后剖析tornado模板做准备,也是由于该知识点使用的巧妙,所有就单独用一篇来介绍了。废话不多说,直接上代码:

#!usr/bin/env python
#coding:utf-8namespace = {'name':'wupeiqi','data':[18,73,84]}code =  '''def hellocute():return  "name %s ,age %d" %(name,data[0],) '''func = compile(code, '<string>', "exec")exec func in namespaceresult = namespace['hellocute']()print result

此段代码的执行结果是:name wupeiqi,age 18

上述代码解析:

  • 第6行,code是一个字符串,该字符串的内容是一个函数体。
  • 第8行,将code字符串编译成函数 hello
  • 第10行,将函数 hello 添加到namespace字典中(key为hello),同时也将python的所有内置函数添加到namespace字段中(key为__builtins__),如此一来,namespace中的内容好比是一个个的全局变量,即
    name = wupeiqi
    data = [18,73,84]def hellocute():return  "name %s ,age %d" %(name,data[0],)
  • 第12行,执行Hello函数并将返回值复制给result
  • 第14行,输入result

这段代码用的很是巧妙有木有,亮瞎狗眼有木有,居然把字符串变成了函数并且还为该函数提供了全局变量。对于该功能,它就是python的web框架中模板语言部分至关重要的部分,因为在模板处理过程中,首先会读取html文件,然后分割html文件,再然后讲分割的文件组成一个字符串表示的函数,再再然后就是利用上述方法执行字符串表示的函数。

 

转载于:https://www.cnblogs.com/bingabcd/p/7508086.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生活常识

雷雨天野外要关手机 温汉华介绍&#xff0c;雷雨天&#xff0c;山顶空旷处容易遭雷电袭击。 他同时提醒&#xff0c;若游客在山上游览时&#xff0c;遭遇到电闪雷鸣的暴雨天气时&#xff0c;一定要注意以下事项&#xff1a; 其一&#xff0c;关停自己的手机。 其二&#xff0c;…

主程序分析法MATLAB编程,专题五  概率统计问题的Matlab求解

【实验目的及要求】I&#xff0e;熟练掌握Matlab编程中常见概率分布的概率密度、概率分布、逆分布、均值和方差等语句的调用格式&#xff0c;学会用Matlab对服从各种分布的样本进行参数估计和假设检验。对实际问题&#xff0c;能够进行样本的分析&#xff0c;得出服从哪种分布的…

LFS(Linux From Scratch)学习

一、环境准备 使用Debian平台&#xff0c;需做如下环境检查&#xff1a; 1、检查各个需要的工具及内核版本号&#xff0c;看看是否符合lfs7.7的列表要求 2、检查需要用到的库&#xff0c;一共有三个&#xff0c;gmp, mpfr和mpc 工具检查脚本如下&#xff1a; #filename:check_e…

腾讯云 Centos 配置 JDK Tomcat Mysql

配置JDK 从 oracle 官网下载 rpm 版本的 jdk 包,官方链接:点击此处跳转。下载jdk的时候记得看一看自己的系统是 64 位还是 32 位的&#xff0c;下对应的版本。下载好以后上传到腾讯云服务器中,命令格式为 scp &#xff3b;文件路径] &#xff3b;云主机用户名ip地址]:[服务器上…

php 取url根域名,php中取得URL的根域名的代码

/*** 取得根域名** author lonely* create 2011-3-11* version 0.1* lastupdate lonely* package Sl*/class Sl_RootDomain{private static $self;private $domainnull;private $hostnull;private $state_domain;private $top_domain;/*** 取得域名分析实例* Enter description…

如何创建sequence

我用的是在oracle中的方法&#xff0c;在oracle中sequence就是所谓的序列号&#xff0c;每次取的时候它会自动增加&#xff0c;一般用在需要按序列号排序的地方。 1、Create Sequence 你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限&#xff0c; CREATE SEQUENCE SI_E…

简易版jQuery——mQuery

前面的话 虽然jQuery已经日渐式微&#xff0c;但它里面的许多思想&#xff0c;如选择器、链式调用、方法函数化、取赋值合体等&#xff0c;有的已经变成了标准&#xff0c;有的一直影响到现在。所以&#xff0c;jQuery是一个伟大的前端框架。前端世界日新月异&#xff0c;由于实…

LaTeX 安装配置 OSX

LaTeX 安装配置 OSX官方网站&#xff1a;http://www.latex-project.orghttp://www.tug.org/mactex/http://pages.uoregon.edu/koch/BasicTeX.pdf完整的Tex超过2G&#xff0c;一般用户没必要&#xff0c;可以先安装BasicTeX&#xff0c;当有需要时include必要的库即可1.安装Basi…

php 正三角塔,PHP 环境塔建与数据类型转换

手动塔建PHP开发环境安装php c:\apps\php安装apache c:\apps\apache1.配制apache配制c:\apps\apache\conf\httpd.confDocumentRoot"c:/apps/www" //指定工作目录,WWW为自已创健Directoryindex index.php index.html // 加入:loadModule php5_module "c:\apps\PH…

C/C++基础知识:函数指针和指针函数的基本概念

【函数指针】 在程序运行中&#xff0c;函数代码是程序的算法指令部分&#xff0c;它们和数组一样也占用存储空间&#xff0c;都有相应的地址。可以使用指针变量指向数组的首地址&#xff0c;也可以使用指针变量指向函数代码的首地址&#xff0c;指向函数代码首地址的指针…

告警系统邮件引擎

2019独角兽企业重金招聘Python工程师标准>>> 20.23-20.25 告警系统邮件引擎 创建发邮件的脚本——mail.py [rootlocalhost mail]# pwd /usr/local/sbin/mon/mail[rootlocalhost mail]# vim mail.py #!/usr/bin/env python #-*- coding: UTF-8 -*- import os,sys rel…

【HTTP 2】简介(Introduction)

前情提要 在上一篇文章《【HTTP 2.0】 序言》中&#xff0c;我们简要介绍了 HTTP 2 协议的概要和协议状态。 在本篇文章中&#xff0c;我们将会了解到 HTTP 2 协议简介&#xff08;Introduction&#xff09;部分的内容。 简介&#xff08;Introduction&#xff09; 超文本传输协…

java测试类生成对象,java编写student类 用Java编写一段测试程序,生成student类的两个对象,并输出每个对象基本信息?...

java中怎么创建对象数组&#xff1f;比如我创建了一个学生类Student&#xff0c;怎么用这个类创建一个对象数组&#xff0c;麻烦给个例子&#xff1f;学生类&#xff1a;classA{privateStringnameprivateintagepublicStringgetName(){returnname}publicvoidsetName(Stringname)…

iOS -- SKScene类

SKScene类 继承自SKEffectNode:SKNode:UIResponder:NSObject符合NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject)框架 /System/Library/Frameworks/SpriteKit.framework可用性可用于iOS 7.0或者更晚的版本声明于SKScene.h参考指南Sprite Kit Progamming Guide概览 重要提…

SSD硬盘 全盘安全擦除

此文From http://ssd.zol.com.cn/575/5753057.html 在SSD固态硬盘的使用过程中&#xff0c;部分用户可能会碰到计算机意外掉电或死机并强行断电后&#xff0c;系统出现异常&#xff0c;扫描SSD后发现坏块&#xff0c;然后一着急一跺脚甚至想返厂维修。 其实掉电后固态硬盘出现坏…

php中等3秒再跳转,跳转和重定向

页面跳转在应用开发中&#xff0c;经常会遇到一些带有提示信息的跳转页面&#xff0c;例如操作成功或者操作错误页面&#xff0c;并且自动跳转到另外一个目标页面。系统的ThinkController类内置了两个跳转方法success和error&#xff0c;用于页面跳转提示&#xff0c;而且可以支…

2017敏捷沙滩大会:完美软件,测量持续交付,以及探索未来

在英国康沃尔郡举行的2017敏捷沙滩大会上&#xff0c;数百名演讲者和参与者共聚一堂&#xff0c;探讨敏捷和后敏捷领域软件开发方法有哪些最新进展。本次大会最后一个下午的要点包括&#xff1a;交付团队可以通过拥抱精益、迭代和持续的部署方法更快速地实现业务价值&#xff1…

做fzu oj 1045 做减法学到的sprintf()函数

题目 做题一直输不出答案&#xff0c;于是就上网去百度了这题的解题&#xff0c;发现解答十分的简短&#xff0c;而且其中我看见了平时没见过的函数&#xff0c;sprintf()。 于是就百度sprintf()的使用。 如下&#xff1a; 函数功能&#xff1a;把格式化的数据写入某个字符串 函…

动态内存分配及变量存储类别(第二部分)

5. C语言变量的存储类别和生存期 我们知道&#xff0c;变量是有数据类型的&#xff0c;用以说明它占用多大的内存空间&#xff0c;可以进行什么样的操作。除了数据类型&#xff0c;变量还有一个属性&#xff0c;称为“存储类别”。存储类别就是数据在内存中的存放区域。一个正在…

oracle的em能干什么,转载 解决Oracle的EM登录

转载 解决Oracle的EM登录(2011-03-13 20:53:39)标签&#xff1a;杂谈这几天解决了EM无法登录的问题&#xff0c;顺便也把j数据库程序中常出现的ORA_12518错误解决了&#xff0c;有必要总结一下&#xff0c;我最初遇到的情况是这样的&#xff1a;1. 编写java程序访问oracle数据库…