- 外文名
- eval
- 描 述
- 要计算的字符串
- 参 数
- string
- 中文名
- eval
- 属 性
- 函数
-
eval
2019-05-28 14:04:321.eval()函数 eval(<字符串>)能够以Python表达式的方式解析并执行字符串,并将返回结果输出。eval()函数将去掉字符串的两个引号,将其解释为一个变量。 作用: a. 处理数字 单引号,双引号,eval()函数都将其...1.eval()函数
eval(<字符串>)能够以Python表达式的方式解析并执行字符串,并将返回结果输出。eval()函数将去掉字符串的两个引号,将其解释为一个变量。
作用:
a. 处理数字
单引号,双引号,eval()函数都将其解释为int类型;三引号则解释为str类型。
b.处理字符串类型的字符串
对于eval()括号中的的字符串(非数字),如果字符串带的是单引号或者是双引号都会引起NameError,这是因为eval()函数在处理字符串时会去掉其两个引号。正确应该使用一个单引号包含一个双引号组成的三引号来包含字符串。
2.input函数
在获得用户输入之前,input()函数可以包含一些提示性的文字。
<变量> = input("提示性的 文字")
string = input("请输入字符串:")
无论用户输入的是字符还是数字,input()函数统一按照字符串类型输出。因此input()的输出类型是str。
3.两者结合使用
使用eval(input('请输入数字:'))来获取用户输入的数字
4.总结
对于接收用户输入的数字,可以使用的结合:
a = eval(input('请输入一个数字:'))OR
a = int(input())
对于接收用户输入的字符串,则可以直接使用input()函数:
input_string = input("请输入一个字符串:")
*eval(input())在接收输入数字作为变量时非常好用,可以尽量在此场合下使用。
-
Eval
2012-09-12 13:12:35Eval! shell> a=abc shell> b=def shell> $a=ghi ///Wrong ! $a-->only as right value! shell> eval $a=nice /// Right! shell> echo $abc nice shell>eval "string" ///eval 会和后面的字符串合并起来 as a ...Eval!
shell> a=abc shell> b=def shell> $a=ghi ///Wrong ! $a-->only as right value! shell> eval $a=nice /// Right! shell> echo $abc nice shell>eval "string" ///eval 会和后面的字符串合并起来 as a single commnd!
#!/bin/bash #ind-ref.sh: 间接变量引用. #访问一个以另一个变量内容作为名字的变量的值. a=letter_of_alphabet # 变量"a"的值是另一个变量的名字. letter_of_alphabet=z z=abcdef echo # 直接引用. echo "a = $a" # a = letter_of_alphabet # 间接引用. eval a=\$$a echo "Now(one) a = $a" # now a = z # 2次间接引用. #+ 加上上面那一次! eval a=\$$a echo "Now(tow) a = $a" # now a = abcdef echo
-
matlab中eval用法
2018-01-28 13:13:49eval的功能简单来说就是可以把字符串当做命令来执行, 之前没用到的时候对这句话不太懂,百度了一下,看到有人举的例子: eval('y=sin(1)')与命令 y=sin(1)等价 emmm看完后虽然懂了基本用法还是一脸懵逼,道理我...eval的功能简单来说就是可以把字符串当做命令来执行,
之前没用到的时候对这句话不太懂,百度了一下,看到有人举的例子:
eval('y=sin(1)')与命令 y=sin(1)等价
emmm看完后虽然懂了基本用法还是一脸懵逼,道理我都懂,但是 这不是自讨无趣吗,直接打命令不是更简单吗?
最近需要把数据按天按时段导出excel我才仔仔细细地研究了一下eval函数的具体用法,真的好用!也指出了遇到的坑,帮助后面像我一样的小白:
eval用于循环中是再好不过了,特别是有些变量的名字中含有有规律的数字,比如我们现在要依次把data1,data2,data3写入excel,并命名为data1.xlsx,data2.xlsx,data3.xlsx,
当然你可以写三行:
xlswrirte('data1.xlsx',data1)
xlswrirte('data2.xlsx',data2)
xlswrirte('data3.xlsx',data3)
但是假如现在有1000个这种data1,data2,...,data1000呢
这个时候就需要eval出马了,我们也可以只用三行:
for i=1:1000
eval(['xlswrite(''data',num2str(i),'.xlsx'',','data',num2str(i),')'])
end
%注意上面的eval语句语句中第一个data前面有两个'',而xlsx后面也有两个'',这就是给我们初学者埋下的坑哈哈,两个''号中第一个'代表转义字符,意思是两个''号中第二个'号为命令中的'号,不是用来分割字符串文本的!
%使用eval时只需要先把想要表示的语句即命令写好,再用'号分割成一段段字符串,注意上面提到的'可以用作转义字符的情况
最后放一个我用来分表写入excel的实例吧,看起来复杂一点但是道理都是一模一样的:
这个是把2880个变量(15min一个,一天96个,30天2880个,按时间顺序已排好序)每96个变量一个excel,每个变量一个sheet:
clear clc close all load time_volume_data.mat%载入数据 %把站点流量按天按时段写入excel文件 m=1; day=1; for n=1:2880 eval(['xlswrite(''data',num2str(day),'.xlsx''',',','data',num2str(n),',','''sheet',num2str(m),''')']); if m==96 m=0; end if mod(n,96)==0 day=day+1; end m=m+1; end
以上,希望大家eval用的愉快!
-
python神奇函数之eval()学习
2017-05-23 15:44:02python中有很多内置的很有用的工具函数,熟练地使用这些小工具绝对可以帮助你在工作中达到事半功倍的效果,今天由于需要用到了eval()函数,这个函数其实之前就用过了但是由于最近一直忙于看论文和方向上的一些其他...前些天发现了一个风趣幽默的人工智能学习网站,通俗易懂,忍不住分享一下给大家。点击跳转到教程
python中有很多内置的很有用的工具函数,熟练地使用这些小工具绝对可以帮助你在工作中达到事半功倍的效果,今天由于需要用到了eval()函数,这个函数其实之前就用过了但是由于最近一直忙于看论文和方向上的一些其他的事,这个东西也就慢慢忘掉了,今天要用,索性直接再学一下,这里就作为是学习的记录了。
eval()官方文档里面给出来的功能解释是:将字符串string对象转化为有效的表达式参与求值运算返回计算结果
语法上:调用的是:eval(expression,globals=None, locals=None)返回的是计算结果
其中:
expression是一个参与计算的python表达式
globals是可选的参数,如果设置属性不为None的话,就必须是dictionary对象了
locals也是一个可选的对象,如果设置属性不为None的话,可以是任何map对象了
python是用命名空间来记录变量的轨迹的,命名空间是一个dictionary,键是变量名,值是变量值。
当一行代码要使用变量 x 的值时,Python 会到所有可用的名字空间去查找变量,按照如下顺序:
1)局部名字空间 - 特指当前函数或类的方法。如果函数定义了一个局部变量 x, 或一个参数 x,Python 将使用它,然后停止搜索。
2)全局名字空间 - 特指当前的模块。如果模块定义了一个名为 x 的变量,函数或类,Python 将使用它然后停止搜索。
3)内置名字空间 - 对每个模块都是全局的。作为最后的尝试,Python 将假设 x 是内置函数或变量。
python的全局名字空间存储在一个叫globals()的dict对象中;局部名字空间存储在一个叫locals()的dict对象中。我们可以用print (locals())来查看该函数体内的所有变量名和变量值。
下面简单演示一下eval()函数的使用:
#!usr/bin/env python #encoding:utf-8 import math def eval_test(): l='[1,2,3,4,[5,6,7,8,9]]' d="{'a':123,'b':456,'c':789}" t='([1,3,5],[5,6,7,8,9],[123,456,789])' print '--------------------------转化开始--------------------------------' print type(l), type(eval(l)) print type(d), type(eval(d)) print type(t), type(eval(t)) if __name__=="__main__": eval_test()
运行结果为:--------------------------转化开始-------------------------------- <type 'str'> <type 'list'> <type 'str'> <type 'dict'> <type 'str'> <type 'tuple'> [Finished in 0.2s]
上面简单演示的是eval在字符串对象和list、dictinoary、tuple对象之间的转换作用众所周知:
eval()的确是一个很便捷的工具,但是便捷使用不当的同时也会造成严重的安全问题,不少的文章和博客都对eval()的安全性进行了相关的分析,在这里我就不多说了,文章最后会给出一些不错的参考资料,感兴趣的话可以看一下。
如何来避免eval()带来的安全性问题呢?在这里给出两点建议:
1、自行写检查函数;
2、使用ast.literal_eval:自行查看DOCUMENT
参考:
python eval()
Python eval 函数妙用
Python 中 eval 带来的潜在风险
Python之eval()函数危险性浅析
-
eval详细说明,局部eval、全局eval和严格eval
2019-11-13 18:31:431、简述 作为解释性语言,JavaScript同样可以解释运行由... JavaScript语言的早期版本定义了eval()函数,eval()只有一个参数。 如果传入的参数不是字符串,则直接返回这个参数;如果是字符串,则会当成... -
初学Python之eval函数的嵌套eval中的eval
2020-02-21 21:14:33但是也算让我彻底知道了Python中的eval这个函数了,因为之前学过一点Python,以为自己已经知道了eval函数的用法(还以为这是用来自动识别输入类型,可以用来输入字典) 结果啪啪打脸了。呜呜呜。。。 题目如下: 在... -
eval函数
2018-08-12 22:53:57eval() 的参数是一个字符串。如果字符串表示的是表达式,eval() 会对表达式进行求值。如果参数表示一个或多个 JavaScript 语句, 那么 eval() 就会执行这些语句。 eval("2 + 2"); // returns 4 如果 ... -
eval和window.eval
2018-02-02 21:06:14javascript中的 eval 函数可以接受一个字符串为参数,并将其中的内容视为好像在书写时就存在于程序中这个位置一样。 function foo(str, a) { eval(str); //欺骗词法作用域 console.log(a, b); } var b = 2; ... -
python eval
2019-06-02 10:58:01eval是Python的一个内置函数,这个函数的作用是,返回传入字符串的表达式的结果。 model = matting_nets.MMNetModel(args, dataset) model = eval(f"matting_nets.{args.model}")(args, dataset) ... -
eval和ast.literal_eval方法
2019-03-08 14:16:36eval() 和 ast.literal_eval()方法 -
eval命令
2017-06-27 12:22:11语法:eval [参数] 补充说明: eval可读取一连串的参数,然后再依参数本身的特性来执行 参数:参数可以不止一个,彼此之间用分号分开 1. eval command-line 其中command-line是在终端上键入的一条普通命令行... -
Ruby meta programming 4(eval/class_eval/module_eval/instance_eval)
2016-08-18 13:04:54你也可以使用eval+bind参数完全替换class_eval/module_eval/instance_eval的# "#{exp}" evaluates it as a string and not as an expression, whereas eval( exp ) evaluates a string as an expressi -
eval 函数
2018-07-04 16:17:02eval(String):将字符串转换为matlab可执行语句并执行。如果说for语句可以将数字进行循环,那么eval结合for语句后,则大大提高其循环范围。比如载入一些数据,m1.mat,m2.mat等等一直到m100.mat 普通写程序 load... -
eval使用
2016-10-27 18:26:03还可以用eval获取最后一个参数eval echo \$$# -
matlab eval
2018-02-25 10:06:33eval(expression) 意思就是完整的执行一个matlab的命令,这个命令是用字符串的方式传入的(也就是要加'')。如果这个表达式当中有数字的话,可以用int2str, num2str, sprintf等函数来进行转化。 例子: eval('a... -
重写eval
2017-08-02 00:37:34工作中遇到金额 的计算,计算公式是根据业务需要,从其他系统中传入,如...开始直接使用eval对表达式进行计算,但是由于eval是将表达式中的数值使用浮点型进行计算,会由于精度的问题产生误差。例如eval('8.51*13.5')=1
-
【数据分析-随到随学】数据分析建模和预测
-
【数据分析-随到随学】Tableau数据分 析+PowerBI
-
分类平均
-
题型举例11111.txt
-
Optimization Week 5: Duality example
-
Optimization Week 13: Newton method and barrier method
-
dsadsad
-
RT809F_20210101.exe
-
使用Python进行Klayout版图绘制
-
VB编写PC与S7-200通讯软件.zip
-
设计一控制系统并仿真:
-
(新)备战2021软考网络工程师分类强化培训套餐
-
商业银行会计学的经典资料.zip
-
Soul网关源码解析(五)接入 Spring Cloud 服务
-
(新)备战2021软考网络工程师培训学习套餐
-
【数据分析实战训练营】Hive详解
-
纯c实现计算器 支持 +-*/%^
-
最新版windows mysql-8.0.23-winx64.zip
-
C# chart实时数据显示简单示例工程文件
-
pytorch中上采样的实现