标签: eval

将列表传递给eval()

有没有办法将列表作为函数参数传递给eval()或者我是否必须将其转换为字符串然后将其解析为函数中的列表?

我的简单示例如下:

 eval("func1(\'" + fArgs + "\')")
Run Code Online (Sandbox Code Playgroud)

我只是不确定是否有更好的方法将fArgs作为列表而不是字符串

注意:该列表由JSON响应提供

编辑:好的,这是我的课程的更多,所以我更好地了解我如何使用eval

def test(arg):
     print arg

#Add all allowed functions to this list to be mapped to a dictionary     
safe_list = ['test']
safe_dict = dict([ (k, locals().get(k, None)) for k in safe_list ])

class Validate:
     def __init__(self, Value, fName, fArgs):
     eval(fName + "(\'" + fArgs + "\')", {"__builtins__":None},safe_dict)
Run Code Online (Sandbox Code Playgroud)

我认为这可能是错的,但据我所知,这是对eval的安全使用,因为可以调用的唯一函数是safe_list字典中列出的函数.要运行的函数和该函数的参数是从JSON对象中提取的.参数将被构造为一个列表,将列表与","一起加入列表中,还是被解释为实际参数或只是一个参数?

python json eval list

0
推荐指数
1
解决办法
6828
查看次数

有没有办法将params传递给使用eval源运行的TCL中的脚本?

我有一个调用的脚本:

 eval source \{$scriptfile\}
Run Code Online (Sandbox Code Playgroud)

其中$ scriptfile是另一个TCL脚本.有没有办法将参数传递给脚本?我想做点什么:

set sampleData "ID=14678934"
eval source \{$scriptfile\} $sampleData 
Run Code Online (Sandbox Code Playgroud)

我知道这是不允许的,但有没有办法将数据传递给使用eval源执行的脚本?

eval tcl

0
推荐指数
1
解决办法
387
查看次数

PHP:如何解码eval()?

我今天刚刚注意到我的wordpress博客中有很多垃圾链接.我刚刚找到一个包含的文件

<?php eval (chr(101).chr(114)...
Run Code Online (Sandbox Code Playgroud)

它非常长的字符串.有人可以告诉我如何解码它以查看它的作用?这样我可以尝试删除垃圾链接?谢谢.

php wordpress decode eval spam

0
推荐指数
1
解决办法
1699
查看次数

解析json对象时eval()是非必需的吗?

<!DOCTYPE html>
<html>
<body>
<h2>JSON Object Creation in JavaScript</h2> 

<p>
Name: <span id="jname"></span><br />
Eval Name: <span id="evalname"></span><br />
<p>
<script>
var yyyy= {
"name":"John Johnson",
"street":"Oslo West 555",
"age":33,
"phone":"555 1234567"};


document.getElementById("jname").innerHTML = yyyy.name;
document.getElementById("evalname").innerHTML = eval(yyyy).name;
</script>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我正在下面这个有和没有eval()相同

JavaScript中的JSON对象创建

姓名:约翰逊

评论名称:约翰逊

html javascript json eval

0
推荐指数
1
解决办法
127
查看次数

在我的chrome扩展中解决eval()问题

我的Chrome网络应用程序出现了问题.该代码适用于普通的Chrome浏览器,但Chrome网上应用店不喜欢我的代码:

拒绝评估脚本,因为它违反了以下内容安全策略指令:"script-src'self'chrome-extension-resource:".

这是我的代码中包含eval()的部分之一:

function checkTimeToSinglePeriod(p) {
console.log("Check time for Period " + p + "...");
var TempBHour = "period" + p + ".bhour";
TempBHour = eval(TempBHour);
var TempBMin = "period" + p + ".bmin";
TempBMin = eval(TempBMin);
var TempEHour = "period" + p + ".ehour";
TempEHour = eval(TempEHour);
var TempEMin = "period" + p + ".emin";
TempEMin = eval(TempEMin);
}
Run Code Online (Sandbox Code Playgroud)

这个函数是从一个遍历"p"的for循环中调用的,所以它遍历我的对象:period1.bhour,period2.bhour等.Temp变量(TempEmin,TempEHour等)产生period1.ehour的值.可能是14之类的,而不是像"period1.ehour"这样的字符串我在我的代码中也有一个部分,它使用eval()将创建的字符串切换为数组名称:

for (d = 1; d < 8; d++) { //Loop through days
    for (l = 1; l < 8; …
Run Code Online (Sandbox Code Playgroud)

javascript eval google-chrome-extension

0
推荐指数
1
解决办法
886
查看次数

必须eval是字符串或代码对象吗?

当我运行下面的代码时,我收到以下错误:eval()arg 1必须是字符串或代码对象

谁知道为什么?这是我从一本书中学习的代码,所以我认为它是正确的.

 # Prompt the user to enter three numbers
number1 = eval(input("Enter the first number: "))
number2 = eval(input("Enter the second number: "))
number3 = eval(input("Enter the third number: "))

 # Compute average
average = (number1 + number2 + number3) / 3

print("The average of", number1, number2, number3, "is", average)
Run Code Online (Sandbox Code Playgroud)

python eval command-line-arguments

0
推荐指数
1
解决办法
1万
查看次数

Php:用eval创建一个类

我正在观看Prestashop的代码,我看到以下内容:

eval(($class_infos->isAbstract() ? 'abstract ' : '').'class '.$classname.' extends '.$classname.'Core {}');
Run Code Online (Sandbox Code Playgroud)

他们使用这个来覆盖核心类,在autoload方法中(完整文件是PrestaShop/classes/Autoload.php)我只是想知道创建动态类是否是一件好事:

  • 这个类是由APC还是操作码优化器缓存的?
  • 性能怎么样?

php eval prestashop

0
推荐指数
1
解决办法
207
查看次数

使用eval来定义Python类数据属性

我想知道是否可以使用eval来创建类数据属性.像下面的代码:

class Test:
    def __init(self):
        matrix_names = ['F', 'B', 'H', 'Q', 'R', 'x', 'P']
        for matrix in matrix_names:
            print matrix
            operation = "self.%s = self.__matrix_read(%s)" %\
             (matrix, matrix)
            eval(operation)

    def __matrix_read(self, filename):
        return (read(".matrix/%s.csv"%filename))
Run Code Online (Sandbox Code Playgroud)

在iPython中我得到:

File "<string>", line 1
   self.F = self.__matrix_read(F)
       ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

python eval class

0
推荐指数
1
解决办法
104
查看次数

在这种情况下,不使用带字典的eval()更好的方法吗?

下面的两个函数对两个整数执行算术运算并返回整数结果.

我听说很多关于eval()的使用非常糟糕,因为它会导致很多问题.但是看看下面我写的代码,看起来eval()可以省去很多行代码,对吧?

def dict_calculate(operation, num1, num2):
    operations = {'add': '+', 'subtract': '-', 'multiply': '*', 'divide': '//'}
    return eval(str(num1) + operations[operation] + str(num2))

def conditional_calculate(operation, num1, num2):
    if operation == 'add':
        return num1 + num2
    if operation == 'subtract':
        return num1 - num2
    if operation == 'multiply':
        return num1 * num2
    if operation == 'divide':
        return num1 // num2

if __name__ == "__main__":
    x = 10
    y = 5

    print(str(dict_calculate('add', x, y)) + ', ', end='')
    print(str(dict_calculate('subtract', x, y)) + ', …
Run Code Online (Sandbox Code Playgroud)

python dictionary eval

0
推荐指数
1
解决办法
36
查看次数

是否有类似反向的eval()函数?

想象以下问题:您在python中有一些内容的字典,并想生成将创建此字典的python代码。(这与eval类似,但相反)是否可以执行此操作?

场景: 我正在使用远程python解释器。我可以给它源文件,但没有输入。因此,我现在正在寻找一种将输入数据编码为python源文件的方法。

例:

d = {'a': [1,4,7]}
str_d = reverse_eval(d)
# "{'a': [1, 4, 7]}"
eval(str_d) == d
Run Code Online (Sandbox Code Playgroud)

python eval

0
推荐指数
1
解决办法
479
查看次数