zoukankan      html  css  js  c++  java
  • python 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__包含了所有的内建函数和值

  • 相关阅读:
    django -- 信号
    django缓存设置
    django-debug-toolbar 插件的使用
    scrapy基本操作流程
    scrapy框架持久化存储
    scrapy基础
    phantomJS,谷歌无头浏览器, 模拟登陆qq空间
    python爬虫--selenium
    pytorch掉坑记录:model.eval的作用
    numpy常用函数
  • 原文地址:https://www.cnblogs.com/miaoweiye/p/12597957.html
Copyright © 2011-2022 走看看