Questions tagged «eval»

eval是允许程序员从代码中的字符串变量执行以相同语言编写的任意代码的功能。



10
Python的eval()有什么作用?
在我用Python阅读的书中,它一直在使用代码 eval(input('blah')) 我阅读了文档,但我理解了它,但仍然看不到它如何更改input()功能。 它有什么作用?有人可以解释吗?
305 python  eval 

6
评估以字符串形式给出的表达式
我很好奇R是否可以使用其eval()功能来执行例如字符串提供的计算。 这是一个常见的情况: eval("5+5") 但是,我得到的不是10个: [1] "5+5" 有什么办法吗?
283 r  eval  r-faq 

26
JavaScript的eval()什么时候不邪恶?
我正在编写一些JavaScript代码来解析用户输入的功能(用于类似于电子表格的功能)。解析了公式之后,我可以将其转换为JavaScript并eval()在其上运行以产生结果。 但是,我总是eval()避免使用它,因为它是邪恶的(如果是对或错,我一直认为它在JavaScript中是更邪恶的,因为用户可能会更改要评估的代码),因此我避免使用它)。 那么,什么时候可以使用它?

6
使用python的eval()与ast.literal_eval()?
我遇到了一些代码,eval()将其作为一种可能的解决方案。现在,我以前从未使用eval()过,但是,我遇到了很多有关它可能引起的潜在危险的信息。也就是说,我对使用它非常谨慎。 我的情况是我有一个用户输入: datamap = raw_input('Provide some data here: ') 哪里datamap需要一本字典。我四处搜寻,发现eval()可以解决这个问题。我认为我可以在尝试使用数据之前检查输入的类型,这将是可行的安全预防措施。 datamap = eval(raw_input('Provide some data here: ') if not isinstance(datamap, dict): return 我通读了文档,但仍不清楚这是否安全。eval是否在输入数据后或datamap调用变量后立即评估数据? 该ast模块是.literal_eval()唯一安全的选择吗?

10
Bash中的eval命令及其典型用法
在阅读了bash手册页和关于此帖子之后。 我仍然很难理解该eval命令的确切功能以及这将是其典型用法。例如,如果我们这样做: bash$ set -- one two three # sets $1 $2 $3 bash$ echo $1 one bash$ n=1 bash$ echo ${$n} ## First attempt to echo $1 using brackets fails bash: ${$n}: bad substitution bash$ echo $($n) ## Second attempt to echo $1 using parentheses fails bash: 1: command …
165 linux  bash  shell  scripting  eval 


5
从PHP中的变量实例化一个类?
我知道这个问题听起来很模糊,因此我将通过一个示例来使其更加清楚: $var = 'bar'; $bar = new {$var}Class('var for __construct()'); //$bar = new barClass('var for __construct()'); 这就是我要做的。你会怎么做?我当然可以这样使用eval(): $var = 'bar'; eval('$bar = new '.$var.'Class(\'var for __construct()\');'); 但是我宁愿远离eval()。没有eval(),有没有办法做到这一点?
146 php  class  variables  eval 

12
为什么到底是邪恶?
我知道Lisp和Scheme程序员通常会说eval除非绝对必要,否则应避免这样做。对于几种编程语言,我已经看到了相同的建议,但是尚未看到反对使用的明确参数列表eval。在哪里可以找到有关使用潜在问题的说明eval? 例如,我知道GOTO过程编程中的问题(使程序难以阅读且难以维护,很难找到安全性问题,等等),但是我从未见过反对的论点eval。 有趣的是,相同的论点GOTO应该对延续有效,但我看到例如Schemers不会说延续是“邪恶的”-使用它们时应该小心。与eval使用延续的代码相比,他们更不喜欢使用代码(据我所知-我可能是错的)。

8
为什么使用“评估”是一种不好的做法?
我正在使用以下课程轻松存储我的歌曲的数据。 class Song: """The class to store the details of each song""" attsToStore=('Name', 'Artist', 'Album', 'Genre', 'Location') def __init__(self): for att in self.attsToStore: exec 'self.%s=None'%(att.lower()) in locals() def setDetail(self, key, val): if key in self.attsToStore: exec 'self.%s=val'%(key.lower()) in locals() 我觉得这比写一个代码if/else块更具扩展性。但是,这eval似乎被认为是不良做法,使用不安全。如果是这样,有人可以向我解释原因并向我展示定义上述类的更好方法吗?
138 python  eval 

1
为什么{} + {} NaN仅在客户端?为什么不在Node.js中?
While [] + []是一个空字符串,[] + {}is "[object Object]"和{} + []is是0。为什么是{} + {}NaN? > {} + {} NaN 我的问题是,为什么不({} + {}).toString()为"[object Object][object Object]"而NaN.toString()为"NaN",这部分已经在这里回答。 我的问题是为什么仅在客户端发生这种情况?在服务器端(Node.js){} + {}是"[object Object][object Object]"。 > {} + {} '[object Object][object Object]' 总结: 在客户端: [] + [] // Returns "" [] + {} // Returns "[object Object]" {} …

20
执行插入.innerHTML的<script>元素
我有一个脚本,可使用将某些内容插入到元素中innerHTML。 内容例如可以是: &lt;script type="text/javascript"&gt;alert('test');&lt;/script&gt; &lt;strong&gt;test&lt;/strong&gt; 问题是&lt;script&gt;标签内的代码无法执行。我用谷歌搜索了一下,但是没有明显的解决方案。如果我使用jQuery插入内容,$(element).append(content);则脚本部分eval在被注入DOM之前就已经存在。 有人能执行所有&lt;script&gt;元素的代码片段吗?jQuery代码有点复杂,所以我无法真正弄清楚它是如何完成的。 编辑: 通过查看jQuery代码,我设法弄清楚了jQuery是如何做到的,从而产生了以下代码: Demo: &lt;div id="element"&gt;&lt;/div&gt; &lt;script type="text/javascript"&gt; function insertAndExecute(id, text) { domelement = document.getElementById(id); domelement.innerHTML = text; var scripts = []; ret = domelement.childNodes; for ( var i = 0; ret[i]; i++ ) { if ( scripts &amp;&amp; nodeName( ret[i], "script" ) &amp;&amp; …


8
如何在bash中的函数内修改全局变量?
我正在与此: GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu) 我有一个如下的脚本: #!/bin/bash e=2 function test1() { e=4 echo "hello" } test1 echo "$e" 哪个返回: hello 4 但是,如果我将函数的结果分配给变量,e则不会修改全局变量: #!/bin/bash e=2 function test1() { e=4 echo "hello" } ret=$(test1) echo "$ret" echo "$e" 返回值: hello 2 我听说过在这种情况下使用eval,所以我在test1: eval 'e=4' 但是结果一样。 您能解释一下为什么未修改吗?如何保存test1函数的回显ret并修改全局变量?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.