第四篇:白话tornado源码之褪去模板外衣的前戏
生活随笔
收集整理的這篇文章主要介紹了
第四篇:白话tornado源码之褪去模板外衣的前戏
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
加班程序員最辛苦,來張圖醒醒腦吧!
...
...
...
好了,醒醒吧,回歸現(xiàn)實看代碼了!!
執(zhí)行字符串表示的函數(shù),并為該函數(shù)提供全局變量
本篇的內(nèi)容從題目中就可以看出來,就是為之后剖析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此段代碼的執(zhí)行結(jié)果是:name wupeiqi,age 18
上述代碼解析:
- 第6行,code是一個字符串,該字符串的內(nèi)容是一個函數(shù)體。
- 第8行,將code字符串編譯成函數(shù) hello
- 第10行,將函數(shù) hello 添加到namespace字典中(key為hello),同時也將python的所有內(nèi)置函數(shù)添加到namespace字段中(key為__builtins__),如此一來,namespace中的內(nèi)容好比是一個個的全局變量,即
name = wupeiqi data = [18,73,84]def hellocute():return "name %s ,age %d" %(name,data[0],) - 第12行,執(zhí)行Hello函數(shù)并將返回值復(fù)制給result
- 第14行,輸入result
這段代碼用的很是巧妙有木有,亮瞎狗眼有木有,居然把字符串變成了函數(shù)并且還為該函數(shù)提供了全局變量。對于該功能,它就是python的web框架中模板語言部分至關(guān)重要的部分,因為在模板處理過程中,首先會讀取html文件,然后分割html文件,再然后講分割的文件組成一個字符串表示的函數(shù),再再然后就是利用上述方法執(zhí)行字符串表示的函數(shù)。
?
轉(zhuǎn)載于:https://www.cnblogs.com/bingabcd/p/7508086.html
總結(jié)
以上是生活随笔為你收集整理的第四篇:白话tornado源码之褪去模板外衣的前戏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 角度标注-Visio制图总结(四)
- 下一篇: word导入mysql表格_数据插入Wo