zoukankan      html  css  js  c++  java
  • python内置函数-compile()

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

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

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

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

     

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

    本篇的内容从题目中就可以看出来,就是为之后剖析tornado模板做准备,也是由于该知识点使用的巧妙,所有就单独用一篇来介绍了。废话不多说,直接上代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!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中的内容好比是一个个的全局变量,即
      1
      2
      3
      4
      5
      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文件,再然后讲分割的文件组成一个字符串表示的函数,再再然后就是利用上述方法执行字符串表示的函数。

  • 相关阅读:
    利用Python进行数据分析_Pandas_绘图和可视化_Matplotlib
    利用Python进行数据分析_Pandas_数据清理、转换、合并、重塑
    利用Python进行数据分析_Pandas_数据加载、存储与文件格式
    利用Python进行数据分析_Pandas_层次化索引
    利用Python进行数据分析_Pandas_处理缺失数据
    利用Python进行数据分析_Pandas_汇总和计算描述统计
    利用Python进行数据分析_Pandas_基本功能
    利用Python进行数据分析_Pandas_数据结构
    fizzbuzz Python很有意思的解法
    javascript Array操作
  • 原文地址:https://www.cnblogs.com/ITPower/p/7119744.html
Copyright © 2011-2022 走看看