草庐IT

eval_derivative

全部标签

python - 使用 python 的 eval() 与 ast.literal_eval()

我遇到了一些代码的情况,其中eval()是一种可能的解决方案。现在,我以前从未使用过eval(),但是,我发现了大量关于它可能导致的潜在危险的信息。也就是说,我对使用它非常谨慎。我的情况是我有用户给出的输入:datamap=input('Providesomedatahere:')datamap需要是字典。我四处搜索,发现eval()可以解决这个问题。我认为我可以在尝试使用数据之前检查输入的类型,这将是一种可行的安全预防措施。datamap=eval(input('Providesomedatahere:')ifnotisinstance(datamap,dict):return我通读

linux - 为什么在 Bash 中应该避免使用 eval,我应该使用什么来代替?

一次又一次,我使用eval在StackOverflow上看到Bash答案并且答案被抨击,双关语,因为使用了这种“邪恶”的结构。为什么是eval这么邪恶?如eval不能安全使用,应该用什么代替? 最佳答案 这个问题远不止表面上的问题。我们将从显而易见的开始:eval有可能执行“脏”数据。脏数据是任何没有被重写为安全使用情况-XYZ的数据;在我们的例子中,它是任何没有被格式化以便可以安全评估的字符串。乍一看,清理数据似乎很容易。假设我们抛出一个选项列表,bash已经提供了一种很好的方法来清理单个元素,以及另一种将整个数组清理为单个字符串

linux - 为什么在 Bash 中应该避免使用 eval,我应该使用什么来代替?

一次又一次,我使用eval在StackOverflow上看到Bash答案并且答案被抨击,双关语,因为使用了这种“邪恶”的结构。为什么是eval这么邪恶?如eval不能安全使用,应该用什么代替? 最佳答案 这个问题远不止表面上的问题。我们将从显而易见的开始:eval有可能执行“脏”数据。脏数据是任何没有被重写为安全使用情况-XYZ的数据;在我们的例子中,它是任何没有被格式化以便可以安全评估的字符串。乍一看,清理数据似乎很容易。假设我们抛出一个选项列表,bash已经提供了一种很好的方法来清理单个元素,以及另一种将整个数组清理为单个字符串

linux - Bash中的 'eval'命令及其典型用途

看完Bashmanpages和关于thispost,我仍然无法理解eval命令的确切作用以及它的典型用途。例如,如果我们这样做:$set--onetwothree#Sets$1$2$3$echo$1one$n=1$echo${$n}##Firstattempttoecho$1usingbracketsfailsbash:${$n}:badsubstitution$echo$($n)##Secondattempttoecho$1usingparenthesesfailsbash:1:commandnotfound$evalecho\${$n}##Thirdattempttoecho$1u

linux - Bash中的 'eval'命令及其典型用途

看完Bashmanpages和关于thispost,我仍然无法理解eval命令的确切作用以及它的典型用途。例如,如果我们这样做:$set--onetwothree#Sets$1$2$3$echo$1one$n=1$echo${$n}##Firstattempttoecho$1usingbracketsfailsbash:${$n}:badsubstitution$echo$($n)##Secondattempttoecho$1usingparenthesesfailsbash:1:commandnotfound$evalecho\${$n}##Thirdattempttoecho$1u

java - Java 中有 eval() 函数吗?

我有如下字符串:Stringstr="4*5";现在我必须使用字符串来获取20的结果。我知道在其他一些语言中,eval()函数可以做到这一点。我如何在Java中做到这一点? 最佳答案 您可以使用ScriptEngine类并将其评估为Javascript字符串。ScriptEngineManagermanager=newScriptEngineManager();ScriptEngineengine=manager.getEngineByName("js");Objectresult=engine.eval("4*5");可能有更好的

java - Java 中有 eval() 函数吗?

我有如下字符串:Stringstr="4*5";现在我必须使用字符串来获取20的结果。我知道在其他一些语言中,eval()函数可以做到这一点。我如何在Java中做到这一点? 最佳答案 您可以使用ScriptEngine类并将其评估为Javascript字符串。ScriptEngineManagermanager=newScriptEngineManager();ScriptEngineengine=manager.getEngineByName("js");Objectresult=engine.eval("4*5");可能有更好的

c++ - 将 shared_ptr<Base> 向下转换为 shared_ptr<Derived>?

更新:此示例中的shared_ptr与Boost中的类似,但它不支持shared_polymorphic_downcast(或dynamic_pointer_cast或static_pointer_cast)!p>我正在尝试在不丢失引用计数的情况下初始化指向派生类的共享指针:structBase{};structDerived:publicBase{};shared_ptrbase(newBase());shared_ptrderived;//error:invalidconversionfrom'Base*const'to'Derived*'derived=base;到目前为止,一切

c++ - 将 shared_ptr<Base> 向下转换为 shared_ptr<Derived>?

更新:此示例中的shared_ptr与Boost中的类似,但它不支持shared_polymorphic_downcast(或dynamic_pointer_cast或static_pointer_cast)!p>我正在尝试在不丢失引用计数的情况下初始化指向派生类的共享指针:structBase{};structDerived:publicBase{};shared_ptrbase(newBase());shared_ptrderived;//error:invalidconversionfrom'Base*const'to'Derived*'derived=base;到目前为止,一切

【Python系列】eval 函数

文章目录1.基本概念2.使用举例3.eval函数运用——计算器4.不要滥用eval()1.基本概念eval()是python中功能非常强大的一个函数将字符串当成有效的表达式来求值,并返回计算结果所谓表达式就是:eval这个函数会把里面的字符串参数的引号去掉,把中间的内容当成Python的代码,eval函数会执行这段代码并且返回执行结果也可以这样来理解:eval()函数就是实现list、dict、tuple、与str之间的转化安全性是eval最大的缺点2.使用举例1基本的数学运算#1.基本的数学运算result=eval("1+1")print(result)#22字符串重复#2.字符串重复re