国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

第四篇:白話tornado源碼之褪去模板外衣的前戲

2019-11-14 17:08:45
字體:
來源:轉載
供稿:網友

加班程序員最辛苦,來張圖醒醒腦吧!

...

...

...

好了,醒醒吧,回歸現實看代碼了!!

執行字符串表示的函數,并為該函數提供全局變量

本篇的內容從題目中就可以看出來,就是為之后剖析tornado模板做準備,也是由于該知識點使用的巧妙,所有就單獨用一篇來介紹了。廢話不多說,直接上代碼:

#!usr/bin/env python#coding:utf-8 namespace = {'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 namespace result = namespace['hellocute']() PRint result

此段代碼的執行結果是:name wupeiqi,age 18

上述代碼解析:

  • 第6行,code是一個字符串,該字符串的內容是一個函數體。
  • 第8行,將code字符串編譯成函數 hello
  • 第10行,將函數 hello 添加到namespace字典中(key為hello),同時也將python的所有內置函數添加到namespace字段中(key為__builtins__),如此一來,namespace中的內容好比是一個個的全局變量,即
    name = wupeiqidata = [18,73,84]def hellocute():    return  "name %s ,age %d" %(name,data[0],)
  • 第12行,執行Hello函數并將返回值復制給result
  • 第14行,輸入result

這段代碼用的很是巧妙有木有,亮瞎狗眼有木有,居然把字符串變成了函數并且還為該函數提供了全局變量。對于該功能,它就是python的web框架中模板語言部分至關重要的部分,因為在模板處理過程中,首先會讀取html文件,然后分割html文件,再然后講分割的文件組成一個字符串表示的函數,再再然后就是利用上述方法執行字符串表示的函數。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 慈利县| 南昌市| 敖汉旗| 平顶山市| 湖南省| 余干县| 元谋县| 锡林浩特市| 弋阳县| 沭阳县| 武强县| 廊坊市| 左贡县| 益阳市| 常德市| 长海县| 嘉黎县| 如东县| 德庆县| 台南县| 闵行区| 科技| 龙泉市| 麻江县| 澄江县| 永和县| 滦南县| 碌曲县| 岳西县| 双辽市| 泰来县| 济源市| 石家庄市| 扶风县| 曲周县| 长丰县| 阿图什市| 葫芦岛市| 无棣县| 桃园县| 静安区|