• python3的eval和exec的区别与联系


    eval:
    可以把字符串里的字符转换为可执行代码,但只支持一行字符。可以返回执行后得到的值。如下:

    f = "3+6+9+8"
    s = eval(f)
    print(s)
    

    输出:

    "C:Program Filespython3python3.exe" D:/codes_py3/luhy_tool/string_utils/mymethod.py
    26
    

    exec:
    可以把字符串里的字符转换为可执行代码,可以支持多行字符。但是拿不到返回结果。如下:

    code = '''
    def func():
    print('test')
    return 555
    func()
    '''
    
    f = exec(code)
    print('---'*5)
    print(f)
    

    输出:

    "C:Program Filespython3python3.exe" D:/codes_py3/luhy_tool/string_utils/mymethod.py
    test
    ---------------
    None
    

    通过exec可以执行动态Python代码,类似Javascript的eval功能;

    而Python中的eval函数可以计算Python表达式,并返回结果;

    (exec不返回结果,print(eval("…"))打印None);

    例如:

    >>> exec("print("hello, world")")
    hello, world
    >>> a = 1
    >>> exec("a = 2")
    >>> a
    2
    

    这里有个scope(命名空间,作用域)的概念,为了不破坏现在的scope,可以新建一个scope(一个字典)执行exec(Javascript没有此功能):

    >>> scope = {}
    >>> exec("a = 4", scope)
    >>> a
    2
    >>> scope['a']
    4
    >>> scope.keys()
    dict_keys(['a', '__builtins__'])
    

    __builtins__包含了所有的内建函数和值

  • 相关阅读:
    开始系统的研究区块链技术了
    基于Centos7的比特币源码编译
    WTForms
    flask-session
    抽屉之Tornado实战(5)--点赞与评论树
    零碎知识点
    flask信号
    MetaClass
    flask系列
    flask源码剖析--请求流程
  • 原文地址:https://www.cnblogs.com/xxpythonxx/p/11643997.html
Copyright © 2020-2023  润新知