第四篇:白話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.pswp.cn/news/257453.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257453.shtml
英文地址,請注明出處:http://en.pswp.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數據庫…