python小知识-好用的eval

简介: eval的功能是将一个字符串转换成python对象

今天和大家介绍一个python内置的函数:好用的eval。

1.eval的好处

eval的功能是将一个字符串转换成python对象,比如可以将浮点型字符转换为浮点型进行运算。

float_str = "8.8"
print(eval(float_str),  type(eval(float_str)), type(float_str))

# 8.8 <class 'float'> <class 'str'>

这似乎没什么了不起,强制类型转换而已。我们再来看一个例子:

fn_str = "sum([2, 3, 4])"
print(eval(fn_str))
# 9

从上可知,eval可以将函数调用的字符串直接转换函数的执行。

eval的另一个场景是:通过字符串(通常是在配置文件里)选择需要执行的函数, 见如下例子:

def process_a(info):
    print("A: {}".format(info))
    
def process_b(info):
    print("B: {}".format(info))
    
fn_select = "a"
process_fn = eval('process_{}'.format(fn_select))
process_fn('this is process ')
# A: this is process 

上面例子中,我们提供了不同处理函数process_*,实际调用的时候可能会根据不同情况调用不同处理函数,或者尝试不同的处理函数的差异,我们就可以通过eval来将函数名转换为函数对象。

2.eval的注意事项

由于eval能够将字符串转换为实际的对象,如果是函数调用,就会执行;所以使用eval的时候,要避免不良的字符串命令, 如:

eval("__import__('os').system('rm -rf /home/*')")

上述例子把home目录所有数据都删除了;所以避免eval里的参数接受公开的输入。

目录
相关文章
|
JSON 数据格式 Python
Python json中一直搞不清的load、loads、dump、dumps、eval
Python json中一直搞不清的load、loads、dump、dumps、eval
513 0
Python json中一直搞不清的load、loads、dump、dumps、eval
|
3天前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
16 2
|
5月前
|
Python
Python eval()函数的使用
Python eval()函数的使用
96 1
|
6月前
|
Python
Python 中 eval 与 exec 的相同点和不同点
【7月更文挑战第17天】相同点: `eval` 和 `exec` 都能动态执行 Python 代码字符串。 不同点: 返回值 - `eval`: 计算表达式的值并返回结果。 - `exec`: 执行一系列语句,不返回任何值。 作用范围 - `eval`: 只能在当前作用域计算表达式。 - `exec`: 可以修改全局和局部变量。 输入的代码类型 - `eval`: 通常用于计算一个表达式。 - `exec`: 用于执行一系列语句。 总之,`eval` 更适合简单的表达式求值,而 `exec` 适用于执行更复杂的代码块。使用时需注意安全性,避免执行不可信的用户输入。
47 11
|
编译器 Python
Python内置函数--eval()
Python内置函数--eval()
79 0
|
JSON 编解码 Linux
Python笔记1(赋值、浅拷贝和深拷贝、字符串日期转换、argparse、sys、overwrite、eval、json.dumps/json.loads、os.system(cmd)、zfill)
Python笔记1(赋值、浅拷贝和深拷贝、字符串日期转换、argparse、sys、overwrite、eval、json.dumps/json.loads、os.system(cmd)、zfill)
83 0
Python笔记1(赋值、浅拷贝和深拷贝、字符串日期转换、argparse、sys、overwrite、eval、json.dumps/json.loads、os.system(cmd)、zfill)
|
安全 Python
Python中的内置函数之一:eval函数的深入理解
在Python中,`eval`函数是一个内置函数,用于将字符串解析并执行为Python表达式。本文将详细介绍`eval`函数的使用方法和注意事项,以及一些实用的例子。
|
编译器 Python
Python内置函数--神奇的eval与exec
Python内置函数--神奇的eval与exec
84 0
python--内置方法eval、zip、enumerate
python--内置方法eval、zip、enumerate
【python】eval()函数的使用与讲解
【python】eval()函数的使用与讲解