python eval函数的神奇魔法

三岁和你用白话学编程,白话一堆,编程自会!

eval() 函数

eval() 函数是python的十分重要的一个函数
他的作用是用表达式的方式解析并执行字符串,输出返回结果

>>> a = 1
>>>eval('a + 1')
>2
>>>eval('2.2 + 3.3')
>5.5

字符串都可以这样计算,那么计算器不是很简单?

eval()书写简易计算器

>>> a = eval(input('输入你要计算的公式'))
>>> print(a)

解析:

用input函数输入需要计算的公式
同eval函数把字符串进行解析并运算
用print函数输出

eval() 深度解析

eval(expression[, globals[, locals]])
实参是一个字符串,以及可选的 globals 和 locals 。 globals 实参必须是一个字典。locals 可以是任何映射对象。

白话时间:
第一个参数一定是字符串,第二个一定是字典,第三个都可以

讲不清楚怎么办,上栗子

>>> a = 3
>>> b = 4
>>> eval('a + b')
>7

>>>print(eval("{'name':'python','age':age}",{"age":162}))
>{'name': 'python', 'age': 162}

>>>age=18
>>>print(eval("{'name':'linux','age':age}",{"age":1822},locals()))
>{'name': 'linux', 'age': 18}

理解理解

eval() 类型

就是把字符串里面的内容转换为原有内容

>>> type(eval('5')) #整型
<class 'int'>
>>> type(eval('14.12')) # 浮点型
<class 'float'>
>>> type(eval('(14, 12)')) #元组
<class 'tuple'>
>>> type(eval("{'name':'python','age':'3.7.4'}"))
<class 'dict'> # 字典
>>> type(eval("['name','python','age','3.7.4']"))
<class 'list'> #数组

特别注意

>>> type(eval("name"))
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    type(eval("name"))
  File "<string>", line 1, in <module>
NameError: name 'name' is not defined

如果字符串里面的英文内容没有被定义使用eval() 函数以后
里面的内容变成了变量,但是没有赋值就会报错

这里特别需要注意

三岁白话时间,今天就到这里啦

发布了38 篇原创文章 · 获赞 116 · 访问量 7580

猜你喜欢

转载自blog.csdn.net/weixin_45623093/article/details/105207241