eval:

(1)只能是一个表达式【也就是一行语句】字符串!

(2)可以计算, 也可以返回计算结果【也就是说表达式的结果就是eval的返回值】,不对代码做evaluate,即不产生新的变量等。

exec:

(1)指定一个包含一个多行语句的字符串对象。

(2)可以产生新的变量,但没有返回值(也就是None)。【需要区分函数的返回值和代码执行过程中的输出悉尼】

3、动态创建变量

(1)locals():字典类型,存放本地变量的命令空间

(2)exec()可以产生新的变量,eval()不行。

4、compile()

eval和exec的doc中都会提到compile,那么compile()到底怎么使用呢?

看doc可知:compile()将源码转为code对象,然后再传入给eval或者exec执行。

(1)compile()作用就是预包装code为一个对象,然后作为eval和exec的参数,同时支持很多其他功能,比如控制code的输出信息等等。

(2)compile重点参数在于mode,本质上和eva和exec一样!(使用exec模式,可以包装多行代码,而且eval()和exec()都可以执行,但是使用eval模型,则只能包装表达式!)

更多学习笔记可以关注我的微信公众号「kelly学挖掘」,欢迎交流。

--- over --

字符串作为代码执行的方法:1、eval()构造器:eval(source, globals=None, locals=None, /)说明:输入一个【python表达式或code对象】参与计算。用于恶意攻击,窥视:再看下eval的参数globals和locals参数的用法,看栗子:一幕了然,局部变量空间和全局变量空间的优先级的先后顺序~2、e... 今天又是拖到十一点半之后才写日更的一天。Anyway,开始今天的内容。 今天搞测试用例的时候不同的用例之间只有5%的 代码 是不同的,因此希望能够用处理 字符串 的方式来复用其余的95% 代码 ,测试脚本是用 Python 写的。所以今天会罕见地出现 Python 的内容。 Python 运行 字符串 的接口: exec () 与 eval () ####1. exec () 【以下内容摘自菜鸟教程】: Python 字符串 作为 代码 执行 def exec _code(): LOC = ". 》》》dictinfo = json.loads(json_str) 输出dict类型 字典到JSON转化: 》》》jsoninfo = json.dumps(dict)输出str类型 info = {'name' : 'jay', 'sex' : 'male', 'age': 22} exec _stmt ::= " exec " or_expr ["in" expression ["," expression]] 注意: exec 是一个语法声明,不是一个函数.也就是说和if,for一样. 官方文档对于 exec 的解释 This statement supports dynamic exec ution of Python code. exec 的第一个表达式可以是: 1. 代码 字符串 2.文件对象 3. 代码 对象 4.tuple 前面三种情况差不多,第四种比较特殊最后讲
这篇文章主要介绍了 python 如何吧 字符串 类型list转换成list,文中通过示例 代码 介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python 读取了一个list是 字符串 形式的'[11.23,23.34]’,想转换成list类型: import ast str_list = "[11.23,23.34]" list_list = ast.literal_ eval (str_list) print(type(list_list)) 得到结果为: import json str_list = "[11.2
exec : 执行 字符串 中的语句 exec file:用来 执行 一个文件 需注意的是, exec 是一个语句,而 eval ()和 exec file()则是内建built-in函数。 Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> print eval ("x+1")
动态的 执行 代码 ,可以 执行 储存在 字符串 或文件中的 Python 语句 相比 eval exec 可以 执行 更复杂的 python 代码 eval 只是 执行 一个表达式 原型: exec (expression, globals=None, local s=None) expression:必选参数,表示需要被指定的 Python 代码 。它必须是 字符串 或code对象。如果expression是一个 字符串 ,该 字符串 会先被解析为一组 Python 语句,然后在 执行 (除非发生语法错误)。如果expression是一个code对象,那么它只是被
2.参数情况:(1)如果参数是一个表达式, eval () 函数将 执行 表达式; (2) 如果参数是Javascript语句, eval ()将 执行 Javascript 语句 3.注意:(如果 执行 结果是一个值就返回,不是就返回undefined,如果参数不是一 个 字符串 ,则直接返回该参数) 4.语法: eval (string), 5.案例: eval ("var a=1");//声明一个变量a并赋值1。
因为在工作中需要用到用 python 来调用自定义于不再py文件中的 python 代码 ,本来我的想法是在 执行 这些 代码 的时候在开启一个 python 解释器,并把这些 python 代码 复制到解释器,使其 执行 并得到结果,现在发现 python 中有 exec 函数可以 执行 字符串 python 代码 ,这大大简化了调用的工程。下面转载一下 python 中关于 exec exec 的一些知识。注意是转载!!!!!! 其关于...
Python 是一种动态语言,允许程序员创建灵活的 代码 ,尤其是对函数参数的处理。 Python 中的函数参数可以是 字符串 类型,这意味着程序员可以将 字符串 作为函数参数传递,然后使用 Python 的动态 执行 功能来运行 字符串 内容。 Python 中使用 eval ()或 exec ()函数可以实现动态 代码 执行 eval ()函数将 字符串 作为 Python 表达式进行运算,而 exec ()函数则将 字符串 作为 Python 语句 执行 。这两个函数都可以将 字符串 参数作为函数的形参,并在函数体内进行动态 执行 ,从而实现灵活的操作。 使用 字符串 参数作为函数参数,可以在实际应用中更加灵活和便捷。例如,可以将 字符串 作为参数传递给函数,然后通过动态 执行 实现对任意函数的操作。此外,还可以将 字符串 作为函数的配置文件,实现程序的灵活配置,减少 代码 冗余,并提高 代码 的可维护性和可读性。 需要注意的是,在使用 字符串 作为函数参数时,要保证输入的 字符串 是正确的 Python 代码 ,否则可能会导致程序运行错误。例如,输入无效的表达式或语句,可能会导致语法错误或运行时异常。 总之,利用 Python 的动态 执行 功能,结合 字符串 形参,可以灵活、高效地实现程序的扩展和配置,从而提高程序的可扩展性、可维护性和可读性。