菜鸟教程 -- 学的不仅是技术,更是梦想!

Python 基础教程
(追記) (追記ここまで)

Python eval() 函数

Python 内置函数 Python 内置函数


描述

eval() 函数用来执行一个字符串表达式,并返回表达式的值。

字符串表达式可以包含变量、函数调用、运算符和其他 Python 语法元素。

语法

以下是 eval() 方法的语法:

eval(expression[, globals[, locals]])

参数

  • expression -- 表达式。
  • globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
  • locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

eval() 函数将字符串 expression 解析为 Python 表达式,并在指定的命名空间中执行它。

返回值

eval() 函数将字符串转换为相应的对象,并返回表达式的结果。


实例

以下展示了使用 eval() 方法的实例:

实例 1

>>>x = 7 >>> eval('3 * x')21 >>> eval('pow(2,2)')4 >>> eval('2 + 2')4 >>> n=81 >>> eval("n + 4")85

实例 2

# 执行简单的数学表达式
result = eval("2 + 3 * 4")
print(result) # 输出: 14

# 执行变量引用
x = 10
result = eval("x + 5")
print(result) # 输出: 15

# 在指定命名空间中执行表达式
namespace = {'a': 2, 'b': 3}
result = eval("a + b", namespace)
print(result) # 输出: 5

注意: eval() 函数执行的代码具有潜在的安全风险。如果使用不受信任的字符串作为表达式,则可能导致代码注入漏洞,因此,应谨慎使用 eval() 函数,并确保仅执行可信任的字符串表达式。

Python 内置函数 Python 内置函数

AI 思考中...

7 篇笔记 写笔记

  1. #0

    saberbin

    win***[email protected]

    74

    还可以将字符串对应的名字的变量转换成该变量对应的值:

    >>> x='7'
    >>> x
    '7'
    >>> a=eval(x)
    >>> a
    7
    >>> b='a' # 等价于b='7'
    >>> c=eval(b)
    >>> c
    7
    >>>

    saberbin

    win***[email protected]

    9年前 (2017年12月22日)
  2. #0

    去掉字符串本身的引号

    825***[email protected]

    214

    eval 方法能使字符串本身的引号去掉,保留字符的原本属性。

    >>> a = "123"
    >>> type(a)
    <class 'str'>
    >>> b = eval(a)
    >>> b
    123
    >>> type(b)
    <class 'int'>

    去掉字符串本身的引号

    825***[email protected]

    8年前 (2018年05月04日)
  3. #0

    json

    wrb***[email protected]

    82

    上面笔记中有一句我觉得很在理,eval这个函数就是在返回,它觉得正确的那个值,我这里举两个例子,经验不足,欢迎指正。

    >>>str1 = "[{11,22},{22,33},{33,44},{44,55}]"
    >>>type(str1)
    <class 'str'>
    >>>list1 = eval(str1)
    >>>list1
    [{11,22},{22,33},{33,44},{44,55}]
    >>>type(list)
    <class 'list'>
    >>>a = input("请输入:")
    >>>__import__("os").getcwd()
    >>>eval(a)
    C:\Python27 # 输出结果是保存代码的文件夹路径

    json

    wrb***[email protected]

    8年前 (2018年05月20日)
  4. #0

    不梦君

    411***[email protected]

    186

    eval() 函数也可以直接用来提取用户输入的多个值。

    例如:

    a,b=eval(input())

    输入:10,5,得到 a=10,b=5

    不梦君

    411***[email protected]

    8年前 (2018年09月24日)
  5. #0

    李明

    q68***[email protected]

    67

    eval() 函数可将看起来像列表的字符串重新转换为列表。

    例如: 字符串 ['1709020230', '1707030416', '0', '0', '0'] 看起来好像是列表的模样,实际为字符串的字符串还原回列表形态。

    例如:

    zifu=" ['1709020230', '1707030416', '0', '0', '0'] "
    print(type(zifu))
    ls =eval(zifu)
    print(type(ls))

    结果是:

    <class 'str'>
    <class 'list'>

    这个可以应用在例如,读取一个文本文件中的列表,但是直接读取出来的是字符串格式,这时候可以用 eval() 来将字符串格式的"假列表"转换为真列表。

    李明

    q68***[email protected]

    6年前 (2020年03月18日)
  6. #0

    aiF

    173***[email protected]

    34

    eval 函数有将字符格式的伪 python 代码转成正常的 python 代码,特别适合于读取 config 文件和获取用户输入格式的转换:

    config_args = '[(1,2,3),(4,5,6),(7,8,9)]'
    # 如果不用 eval 函数的话,将 str 格式转成 python 字面格式需要如下操作
    import re
    config_args = re.findall("\d+",config_args)
    config_args = list(map(int,img_size))
    config_args = [tuple(img_size[i:i+3]) for i in range(0,len(img_size),3)]
    print(config_args)
    # 而用来 eval 函数仅仅需要一行代码
    config_args = eval(config_args)

    aiF

    173***[email protected]

    4年前 (2022年03月19日)
  7. #0

    guorui

    xia***[email protected]

    7

    eval 函数可以用字符串的方式调用函数(也即在当前域取值的作用)

    def handler_version(url):
     pass
    def request_version(url):
     pass
    func = eval("{0}_version".format(funcType)) # 这里func为相应的函数对象
    url = func(URL) # 通过函数对象调用函数

    guorui

    xia***[email protected]

    3年前 (2023年07月17日)

点我分享笔记

  • 昵称 (必填)
  • 邮箱 (必填)
  • 引用地址

AltStyle によって変換されたページ (->オリジナル) /