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
的动态
执行
功能,结合
字符串
形参,可以灵活、高效地实现程序的扩展和配置,从而提高程序的可扩展性、可维护性和可读性。