专栏首页盛开在夏天的太阳python内置函数-compile()

python内置函数-compile()

python的内置函数 compile()--编译.

  这个函数有什么用呢? 一个最简单的例子, 就是我们的代码, 会被解释器读取,解释器读取后的其实是字符串, 然后通过compile编译后, 又转换成python可识别的代码.这样python就能执行了.

  这里就有一个例子, 是将一段str字符串, 通过compile编译为python代码. 具体如下:

  参考自http://www.cnblogs.com/wupeiqi/p/4592637.html

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

本篇的内容从题目中就可以看出来,就是为之后剖析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 = wupeiqi data = [18,73,84] def hellocute(): return "name %s ,age %d" %(name,data[0],)
  • 第12行,执行Hello函数并将返回值复制给result
  • 第14行,输入result

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 内置函数 -- filter 和 map

    参考地址:http://www.cnblogs.com/sesshoumaru/p/6000788.html

    用户7798898
  • 1.4 打破双亲委派机制

    比如, 我现在有一个自定义类加载器, 加载的是~/com/lxl/jvm/User1.class类, 而在应用程序的target目录下也有一个com/lxl/...

    用户7798898
  • java GC 类加载器 Servlet

    1.创建Servlet实例对象。通过服务器反射机制创建Servlet对象,第一次请

    用户7798898
  • Python3补充知识点

    描述:初学python语言,竟然很久才发现python没有switch-case语句,查看官方文档说是可以用if-elseif-elseif代替,同时也用其他的...

    WeiyiGeek
  • python输入与输出涨姿势

    上一节主要学习了利用python写第一个程序,学会使用了print函数进行输出。本节知识主要开始介绍输出与输入的方法。

    刘金玉编程
  • JAVA实现UTC时间转换成北京时间

    之前有一篇关于将UTC时间转换成北京时间的python文章(传送门),这次需要用到java版的,本以为这种小工具网上会很多,但是在网上搜了一圈之后发现都不尽人意...

    我是李超人
  • 深度学习比医生更擅长发现癌症

    JeremyHoward 打开了他将在Exponential Medicine 上做的机器学习的演讲。一个如史诗般的创造刚刚发生,他不得不把它包括在内。“在我登...

    新智元
  • 树莓派人脸识别实际应用:人脸识别门禁

    在上一篇文章树莓派调用百度人脸识别API实现人脸识别,我们完成了树莓派人脸识别的基础环境配置,人脸识别功能也测试成功了,现在我们做一个小小的案例来实际应用一下,...

    小雨编程
  • 深度学习如何入门?

    关于深度学习,网上的资料很多,不过貌似大部分都不太适合初学者。 这里有几个原因: 1. 深度学习确实需要一定的数学基础。如果不用深入浅出地方法讲,有些读者就会有...

    AI研习社
  • 通俗易懂丨深度学习如何入门

    ? 作者:Jacky Yang(知乎) 关于深度学习,网上的资料很多,不过貌似大部分都不太适合初学者。 这里有几个原因: 1.深度学习确实需要一定的数学基础...

    用户1332428

扫码关注云+社区

领取腾讯云代金券