eval()与exec() 的基本用法

Posted 卖山楂啦prss

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了eval()与exec() 的基本用法相关的知识,希望对你有一定的参考价值。

eval()exec() ,对它们并不太了解,然后简单的学了一下,做个笔记。

eval()exec() 函数都属于 Python 的内置函数,这两个函数在功能和用法方面都有相似之处

两个函数都很强大,它们将字符串内容当做有效的代码执行。

eval() 的基本用法:执行一个表达式,有返回值

eval(expression, globals=None, locals=None)

globals 与 locals 是可选参数,默认值是 None

eval(str) 可以把字符串 str 当作有效的表达式来求值并且返回运算结果

注:str 只能是单个运算表达式,不可以进行赋值或其他复杂的代码逻辑。

exec() 的基本用法:执行一段代码,没有返回值

exec(expression, globals=None, locals=None, /)

exec() 它可以将 str 解析为代码来执行,因此不但可以进行计算,还可以进行赋值等操作,但是没有返回值。

特别的,exec() 还可以接受有效的.py文件

exec() 和 eval() 的一些简单示例

exec() 是执行一段代码,没有返回值
exec() 中最适合放置运行后没有结果的语句

eval() 是执行一个表达式,既然是表达式,就有返回值
eval() 中适合放置有结果返回的语句

# exec() 是执行一段代码,没有返回值
a1 = exec('1++1') # 相当于直接执行 1++1,但是并没有返回值,a1 应为 None
print(a1)

a2 = 0
exec('a2 = 1++1') # #相当于直接执行 a2 = 1++1
print(a2)


# eval() 是执行一个表达式,既然是表达式,就有返回值
a3 = eval('1+1') # 执行 1+1,并把结果返回给 a3
print(a3)

eval('a4 = 1+1')
print(a4)

运行结果为:

import numpy as np
import pandas as pd
df = pd.DataFrame({'Country':['China','China', 'India', 'India', 'America', 'Japan', 'China', 'India'],
                   'A':[10000, 10000, 5000, 5002, 40000, 50000, 8000, 5000],
                    'B':[5000, 4321, 1234, 4010, 250, 250, 4500, 4321]})
print(df)

df.eval('C = A + B',inplace=True)
print(df)
'''
   Country      A     B      C
0    China  10000  5000  15000
1    China  10000  4321  14321
2    India   5000  1234   6234
3    India   5002  4010   9012
4  America  40000   250  40250
5    Japan  50000   250  50250
6    China   8000  4500  12500
7    India   5000  4321   9321
'''

df['D'] = pd.eval('df.A-df.B')
print(df)
'''
   Country      A     B      C      D
0    China  10000  5000  15000   5000
1    China  10000  4321  14321   5679
2    India   5000  1234   6234   3766
3    India   5002  4010   9012    992
4  America  40000   250  40250  39750
5    Japan  50000   250  50250  49750
6    China   8000  4500  12500   3500
7    India   5000  4321   9321    679
'''

x = 5
df['F'] = pd.eval("df.A + (df.B * x)") 
print(df)
'''
   Country      A     B      C      D      F
0    China  10000  5000  15000   5000  35000
1    China  10000  4321  14321   5679  31605
2    India   5000  1234   6234   3766  11170
3    India   5002  4010   9012    992  25052
4  America  40000   250  40250  39750  41250
5    Japan  50000   250  50250  49750  51250
6    China   8000  4500  12500   3500  30500
7    India   5000  4321   9321    679  26605
'''

eval 将字符串形式的列表,转变为真正列表

li = "[1,2,3]"
li = eval(li)

做特征衍生

data.eval('m3_X_123_avg = (X1+X2+X3)/3', inplace=True)

以上是关于eval()与exec() 的基本用法的主要内容,如果未能解决你的问题,请参考以下文章

Python eval 与 exec 函数区别

eval和exec函数的区别

exec与eval函数的使用

Python eval 与 exec 函数

python3的eval和exec的区别与联系

[转]Python中的eval()exec()及其相关函数