日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/10 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第四篇:白话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

總結

以上是生活随笔為你收集整理的第四篇:白话tornado源码之褪去模板外衣的前戏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。