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
  • 相关阅读:
    git 创建一个空分支
    github page的两种类型
    hexo-theme-next
    github网页
    Linux下的CPU使用率与服务器负载的关系与区别
    mysql数据库优化日志(更)-howyue
    图片延时加载
    jQuery实现页面滚动时顶部动态显示隐藏
    TCP与UDP区别
    记一次网站服务器迁移(my)
  • 原文地址:https://www.cnblogs.com/jkklearn/p/14050634.html
Copyright © 2011-2022 走看看