zoukankan      html  css  js  c++  java
  • python中的eval 和 exec 和 execfile

    #eval 函数用来计算python表达式并返回结果
    #exec 可以执行动态的python代码,不返回结果

    def hello():
        print("hello world")
    eval("hello()")  输出 hello world  
    exec("hello()") 输出 hello world

    ##
    或者这样执行也可以
    eval("hello")()

    区别上:

    1  eval 可以返回结果

    def hello():
        print("hello world")
        return "test"

    val = eval("hello()") print(val) #输出 hello world test

    exec 没有返回值

    def hello():
        print("hello world")
        return "test"
    
    val = exec("hello()")
    print(val)
    #输出

    File "Z:/myproject/myproject/test.py", line 9
    val = exec("hello()")
    ^
    SyntaxError: invalid syntax

    2 相比eval , exec可以执行更复杂的 Python 代码

    testtext = '''
    for i in range(3):
        print("the num is %d" % i)
    '''
    
    exec(testtext)

    #输出

    the num is 0
    the num is 1
    the num is 2

    上面的语句 eval 执行不了。eval 只能执行 字符串表达式

    def hello():
        for i in range(4):
            print("the num is %d" % i)
    
    eval("hello()")  #会正常输出

    execfile 

    execfile() 函数可以用来执行一个文件

    需要说明的是在 Python2 中exec不是函数,而是一个内置语句(statement),但是Python 2中有一个 execfile() 函数。可以理解为 Python 3 把 exec 这个 statement 和 execfile() 函数的功能够整合到一个新的 exec() 函数中去了。

    [root@localhost weblearn]# python  t.py
    asdasdf
    [root@localhost weblearn]# cat 1.py
    execfile("t.py")
    [root@localhost weblearn]# cat t.py
    def hello():
        print("asdasdf")
    
    hello()
    [root@localhost weblearn]# python 1.py
    asdasdf
  • 相关阅读:
    一个很简单的脑筋急转弯问题
    DataGrid PCV排序学习
    VS2010 出现打开关联文档错误的解决方案
    JS 简繁体互转代码
    js 常用正则表达式表单验证代码
    【转】自然语言处理(NLP)网上资源整理
    声卡编程讲解
    视频会议1
    转 语音处理资源
    编译WebRTC
  • 原文地址:https://www.cnblogs.com/jkklearn/p/14050634.html
Copyright © 2011-2022 走看看